我试图用相同的单词替换句子中的每个单词,但使用正则表达式引用(通过单词我的意思只是字母,没有数字)。
例如,4 python code
应转换为4 "python" "code"
。
但是这段代码会产生错误的结果
>>> import re
>>> s = "4 python code"
>>> re.sub(r'([a-z]*)', r'"\1"', s)
'""4"" "python" "code"'
有什么想法吗?
答案 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()])