Получение закрытого контента
Я хочу получить закрытый контент. Разделение позволяет мне разделить только на один разделитель.
Входные данные:
\x02\xxx\xxx\xxx\xxx\x03\x02\xxx\xxx\xxx\xxx\x03\x02\xxx\xxx\xxx\xxx\x03
Требуемый выход:
['\xxx\xxx\xxx\xxx\','\xxx\xxx\xxx\xxx\','\xxx\xxx\xxx\xxx\']
Пожалуйста помоги. Благодарю.
2 ответа
Решение
Ты можешь использовать re.split()
из повторного модуля, который позволяет разделить на шаблон. Что-то вроде filter(None,re.split(r'\\x0\d',s))
должно сработать.
Я подозреваю, что вам нужно будет больше рассказать о возможных вариациях ввода, но этот код подойдет для конкретного случая, который вы упомянули:
line = '\x02\xxx\xxx\xxx\x03\x02\xxx\xxx\xxx\x03\x02\xxx\xxx\xxx\x03'
if line.startswith('\x02'):
line = line[4:]
if line.endswith('\x03'):
line = line[:-4]
chunks = line.split('\x03\x02')
print chunks
>>> ('\xxx\xxx\xxx', '\xxx\xxx\xxx', '\xxx\xxx\xxx')
Если бы каждая строка начиналась с '\x02' и заканчивалась на '\x03', этот более простой подход работал бы:
line = line[4:-4]
chunks = line.split('\x03\x02')
Если есть большие различия в разделителях, мне нравится предложение root взглянуть на метод re.split(): http://docs.python.org/2/library/re.html.