Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с задачкой на Python

0ohakero0 Профи (659), закрыт 3 недели назад
Реализуйте функцию split_line, которая разбивает строку по заданному разделителю.

Аргументы функции split_line:

line — строка, которую необходимо разбить по разделителю;
sep — разделитель, по которому происходит разбиение. Разделителем является строго один символ.
В результате работы функция split_line должна возвращать список значений, которые содержатся в строке между указанными разделителями.

В случае если переданная на вход функции строка является пустой, в результате её работы должен вернуться список, состоящий из одной пустой строки.

Важно: если какое-то из значений обособлено двойными кавычками ("<значение>"), то разделительный символ внутри него не считается разделителем. Гарантируется, что в качестве разделителя в функцию split_line никогда не будет передан символ двойной кавычки ("). Также гарантируется, что двойные кавычки используются только для обособления значений снаружи, но не используются внутри самих значений.

Также важно: если значение обособлено двойными кавычками, сами кавычки не считаются частью значения, то есть в итоговом списке данное значение будет идти без двойных кавычек.

Формат сдачи решения

В качестве ответа на задание приведите код реализованной функции. Важно: сама функция не должна ссылаться ни на какие внешние переменные, которые определены за её пределами.

В коде также запрещено использовать ключевое слово import.

P.S. У меня есть свой код, но на последних тестах он не проходит :(
Лучший ответ
xfhg hghf Мастер (2156) 3 недели назад
 def split_line(line, sep): 
if not line:
return ['']

result = []
value = ''
in_quotes = False

for char in line:
if char == '"' and (not value or value[-1] != '\\'):
in_quotes = not in_quotes
elif char == sep and not in_quotes:
result.append(value)
value = ''
else:
value += char

result.append(value) # добавить последнее значение

# Убедиться, что значения в кавычках не содержат кавычек
result = [v.replace('"', '') for v in result]

return result
Такое выдала нейросеть. ХЗ нормальное ли решение.
0ohakero0Профи (659) 3 недели назад
Сейчас проверю и напишу обратную связь. У меня кстати решение почти такое же)
Остальные ответы
ǫᴜᴢᴢ Мастер (1504) 3 недели назад
 def split_line(line, sep): 
if not line:
return ['']

result = []
in_quotes = False
current_value = ''

for char in line:
if char == '"':
in_quotes = not in_quotes
elif char == sep and not in_quotes:
result.append(current_value)
current_value = ''
else:
current_value += char

result.append(current_value)

return result
Похожие вопросы