2015-08-18 2 views
2

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

В моем случае я хочу разделить на пространстве, но не тогда, когда часть строки находится в кавычках.

Это мой код:

data = '"abc dfg" ab da'  
PATTERN = re.compile(r'''((?:[^ "']|"[^"]*"|'[^']*')+)''') 
wordList = PATTERN.split(data)[1::2] 

дает словник:

['"abc dfg"', 'ab', 'da'] 

Как ча n Я изменяю выражение так, чтобы строка была без дополнительных кавычек?

Как это:

['abc dfg', 'ab', 'da'] 
+0

С регулярным выражением или в любом случае? – Tim

+1

просто замените кавычки из возвращаемого текста пустой строкой. –

ответ

5

Вы не должны усложнить регулярное выражение, просто итерацию по списку и удалить " из него. Вы можете сделать это разными способами, например, используя strip('"').

Кстати, у вас есть гораздо лучшее решение:

>>> import shlex 
>>> shlex.split('"abc dfg" ab da') 
['abc dfg', 'ab', 'da'] 
1
>>> wordList = ['"abc dfg"', 'ab', 'da'] 
>>> wordList = [word.strip('"') for word in wordList] 
>>> wordList 
['abc dfg', 'ab', 'da'] 
+0

'[word.strip ('' '). Strip ("' ") для слова в wordList]' –

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