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 に答える