2

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

例如4 python code应该转换为4 "python" "code".

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

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

有任何想法吗?

4

3 回答 3

3

改变,

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

re.sub(r'([a-z]+)', r'"\1"', s)
于 2013-04-12T02:15:58.417 回答
2

根据您将运行它的次数以及性能的重要性,您可能需要考虑编译您的正则表达式。如果您想要大写字母,您可能还想要\w而不是[a-z]- 或者您可以使用[a-zA-Z].

>>> replacer = re.compile("(\w+)")
>>> replacer.sub(r'"\1"', "4 python code")
'"4" "python" "code"'
于 2013-04-12T02:21:35.937 回答
0

另一种不使用re.

s = "4 python code"
new = " ".join([item if item.isdigit() else '"{}"'.format(item) for item in s.split()])
于 2013-04-12T02:39:18.543 回答