Получение закрытого контента

Я хочу получить закрытый контент. Разделение позволяет мне разделить только на один разделитель.

Входные данные:

\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.

Другие вопросы по тегам