2013-04-12 4 views
1

Я пытаюсь заменить каждое слово в предложении тем же самым словом, но цитата (по слову я имею в виду только буквы, цифры), используя регулярное выражение.Добавление цитат в слова с использованием регулярных выражений в Python

Например, 4 python code следует преобразовать в 4 "python" "code".

Но этот код производят неправильный результат

>>> import re 
>>> s = "4 python code" 
>>> re.sub(r'([a-z]*)', r'"\1"', s) 
'""4"" "python" "code"' 

Есть идеи?

ответ

2

В зависимости от того, сколько раз вы будете управлять этим, и насколько важна производительность, вы можете рассмотреть вопрос о компиляции регулярных выражений. Вы также можете захотеть \w вместо [a-z], если хотите, колпачки - или вы могли бы использовать [a-zA-Z].

>>> replacer = re.compile("(\w+)") 
>>> replacer.sub(r'"\1"', "4 python code") 
'"4" "python" "code"' 
+0

'\ w' не будет работать здесь для целей ор, как это на самом деле' [A-Za-z0-9_] '- так что вам придется использовать другие предложения' [а-запорожец Z] ' – Jared

2

Изменение,

re.sub(r'([a-z]*)', r'"\1"', s) 

в

re.sub(r'([a-z]+)', r'"\1"', s) 
0

Другой способ без использования re.

s = "4 python code" 
new = " ".join([item if item.isdigit() else '"{}"'.format(item) for item in s.split()]) 
Смежные вопросы