2016-08-25 7 views
0

Мне нужно разбить строку, как это:питона регулярное выражение, чтобы разделить строку

{tab 3}1/*{tab}*/30116{tab}2012{tab, 2}01{tab}{2016}enter 

Я хочу, чтобы отделить части, которые находятся в и из { и }

Идея заключается в том, чтобы сделать текстовый интерпретатор для команд, передаваемых на python pyautogui.

Результат должен быть в порядке, возможно, в списке с командами и строками.

[ 'tab, 3', '130116', 'tab', '2012', 'tab, 2', '01', 'tab', '2016', 'enter'] 

Порядок важен. Использование Regex Tester Я эту картину:

re.compile (ur '(\{(|.)*\})', re.MULTILINE | re.IGNORECASE) 

Это помечает все детали между { и }. Но я не знаю, как извлечь или разбить строку.

Часть между /* и */ Я уже правильно удаляю, прежде чем получать эту часть. Они могут игнорировать это.

Если возможно, я бы хотел, чтобы Pythonic решил это. Я начинаю с python, для этого я должен был пропустить решение.

Если есть ошибки, простите меня. Я из Бразилии.

Если у вас уже есть другой переводчик, пожалуйста, покажите мне.

Заранее спасибо.

Alexandre

Перевод сделан переводчиком Google.

ответ

1

Я понимаю, что комментарии будут отфильтрованы уже, поэтому я предлагаю простое решение, не уверенный, что это самый «пифонический», но достаточно пифонический и простой в использовании.

Вы можете использовать re.split в соответствии с {} символами, а затем удалить пустые строки с помощью вызова filter из пустых строк.

import re 

r="{tab 3}130116{tab}2012{tab, 2}01{tab}{2016}enter" 

z = filter(lambda x : x!="",re.split("[{}]",r)) 

print(z) 

выход:

['tab 3', '130116', 'tab', '2012', 'tab, 2', '01', 'tab', '2016', 'enter'] 

(могут быть и другие способы сделать это без фильтрующей части с регулярным выражением, более сложной)

+0

Благодаря @ Жан-Франсуа Фабра. Его работы и я узнали об фильтрах! –

Смежные вопросы