如何替换字符串中的一组字符,除非它们是单词的一部分?例如,如果我的文字是“你的wurst person ur”,我想用“youre”替换“ur”。所以最后的文字将是“你是你的香火人”。我不希望改变香肠里面的“你”,因为它在一个单词里面。在python中有一个通用的正则表达方式吗?如果“ur”之前或之后有空格等,我不想担心,只要它是另一个单词的一部分。谢谢!
到目前为止我尝试的是一个简单的
result = re.sub("ur", "youare", text)
但这也取代了“wurst”里面的“ur”。如果我在
中使用单词边界 result = re.sub(r"\bur\b", "youare", text)
它将错过字符串中最后一次出现的“ur”。
答案 0 :(得分:0)
您可以使用string.split()
拆分每个空格的字符串,然后在列表解析中,将'ur'
替换为'youre'
。这可能类似于:
s = "ur the wurst person ur"
result = " ".join(['youre' if w == 'ur' else w for w in s.split()])
希望这有帮助!
答案 1 :(得分:0)
result = re.sub(r'\bur\b', r'youare', "ur the wurst person ur")
来自python文档:
\ b 匹配空字符串,但仅匹配单词的开头或结尾。单词被定义为Unicode字母数字或下划线字符的序列,因此单词的结尾由空格或非字母数字的非下划线Unicode字符表示。请注意,正式地,\ b被定义为\ w和\ W字符之间的边界(反之亦然),或者在\ w和字符串的开头/结尾之间。这意味着r' \ bfoo \ b'匹配' foo',' foo。','(foo)',' bar foo baz'但不是' foobar'或者' foo3'。