我正在尝试使用正则表达式用相同的单词替换句子中的每个单词,但引用(我的意思是字母,没有数字)。
例如4 python code
应该转换为4 "python" "code"
.
但是这段代码产生了错误的结果
>>> import re
>>> s = "4 python code"
>>> re.sub(r'([a-z]*)', r'"\1"', s)
'""4"" "python" "code"'
有任何想法吗?
改变,
re.sub(r'([a-z]*)', r'"\1"', s)
至
re.sub(r'([a-z]+)', r'"\1"', s)
根据您将运行它的次数以及性能的重要性,您可能需要考虑编译您的正则表达式。如果您想要大写字母,您可能还想要\w
而不是[a-z]
- 或者您可以使用[a-zA-Z]
.
>>> replacer = re.compile("(\w+)")
>>> replacer.sub(r'"\1"', "4 python code")
'"4" "python" "code"'
另一种不使用re
.
s = "4 python code"
new = " ".join([item if item.isdigit() else '"{}"'.format(item) for item in s.split()])