2

我正在尝试使用正则表达式来替换单词,但不是完整的单词,甚至句子之间的单词都被替换了。

prepos = ['has','had','have','is','you']
prepo = re.compile('|'.join(prepos))

# x["text"] - contains text with sentences in english

twete = re.sub(prepo,' ',x["text"])
print(twete)

输出:也替换子词我只想替换完整的单词出现。我该如何使用^\b在这种情况下?

4

2 回答 2

3
import re
p = re.compile(r"\b(foo|bar|baz)\b")
p.sub("---", "foo XfooX bar YbarY baz ZbazZ")
# => '--- XfooX --- YbarY --- ZbazZ'

编辑:

如果你想加入正则表达式:

prepos = ["foo", "bar", "baz"]
p = re.compile(r"\b(" + "|".join(prepos) + r")\b")
p.sub("---", "foo XfooX bar YbarY baz ZbazZ")
# => '--- XfooX --- YbarY --- ZbazZ'
于 2012-09-10T09:31:45.913 回答
0

我想你自己给出了答案。

使用 \b 匹配单词开头或结尾的空字符串。此外,您必须在组周围添加大括号以确保整个组匹配。我还建议使用原始字符串。这样的事情应该可以解决问题:

prepos = [r'(\bhas\b)',r'(\bhad\b)',r'(\bhave\b)',r'(\bis\b)',r'(\byou\b)']
prepo = re.compile('|'.join(prepos))

twete = re.sub(prepo,'-',' '.join(sys.argv[1:]))
print twete
于 2012-09-10T09:40:01.787 回答