在Python中使用正则表达式在单词中添加引号

时间:2013-04-12 02:14:29

标签: python regex

我试图用相同的单词替换句子中的每个单词,但使用正则表达式引用(通过单词我的意思只是字母,没有数字)。

例如,4 python code应转换为4 "python" "code"

但是这段代码会产生错误的结果

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

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

更改,

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

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

答案 1 :(得分:2)

根据您运行此次的次数以及性能的重要程度,您可能需要考虑编译正则表达式。如果您想要上限,您可能还需要\w而不是[a-z]。或者您可以使用[a-zA-Z]

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

答案 2 :(得分:0)

另一种不使用re的方法。

s = "4 python code"
new = " ".join([item if item.isdigit() else '"{}"'.format(item) for item in s.split()])