【发布时间】:2017-11-21 20:52:47
【问题描述】:
我需要帮助来仅从较长的字符串中替换整个单词,无论它们在字符串中的位置如何,而被替换的单词也在列表中,因此我们遍历所有单词并替换所有单词。 I have tried using this solution 但它不起作用,我还没有找到任何解决这个问题的方法。
我的代码是这样的:
import re
string1="box unbox boxing boxer box box"
string2="ban banana unban ban ban"
string3="box unbox boxing boxer box box ban banana unban ban ban"
dictionary={"box" , "ban"}
var = "chair"
pat = re.compile(r'\b' + '|'.join(dictionary) + r'\b')
string1 = pat.sub(var, string1)
string2 = pat.sub(var, string2)
string3 = pat.sub(var, string3)
print(string1)
print(string2)
print(string3)
我想要的是用“chair”替换“box”和“ban”词,无论它们在字符串的末尾或开头的位置,或者不管它周围有多少空格。它应该只替换原来的“box”和“ban”词。
目前的输出是这样的:
chair unbox chairing chairer chair chair
chair banana unchair chair chair
chair unbox chairing chairer chair chair chair banana unchair chair chair
我希望输出是这样的:
chair unbox boxing boxer chair chair
chair banana unban chair chair
chair unbox boxing boxer chair chair chair banana unban chair chair
【问题讨论】:
-
你可以找到一个例子here。你错过了一个分组结构。
re.compile(r'\b(?:' + '|'.join(dictionary) + r')\b') -
阅读@EricDuminil 的答案。
标签: arrays regex string replace