1

大文字と小文字を区別しない方法で次のソリューションを使用して、文字列コンテンツ内の単語を置き換えることができます

http://code.activestate.com/recipes/552726/ 
import re

class str_cir(str):
        ''' A string with a built-in case-insensitive replacement method '''

        def ireplace(self,old,new,count=0):
        ''' Behaves like S.replace(), but does so in a case-insensitive
        fashion. '''
            pattern = re.compile(re.escape(old),re.I)
            return re.sub(pattern,new,self,count)

私の問題は、私が提供する単語を正確に置き換える必要があることです

para = "Train toy tram dog cat cow plane TOY  Joy   JoyTOY"

「おもちゃ」という単語を「ハム」に置き換える必要があると、

'Train HAM tram dog cat cow plane HAM  Joy   JoyHAM'

私が必要なのは

'Train HAM tram dog cat cow plane HAM  Joy   JoyTOY'
4

3 に答える 3

4

\bキーワードの開始と終了に追加します。

pattern = re.compile("\\b" + re.escape(old) + "\\b",re.I)

\b単語の境界を意味し、単語の先頭と末尾の空の文字列と一致します(英数字またはアンダースコア文字のシーケンスで定義されます)。(参考

@Tim Pietzckerが指摘したように、キーワードに単語以外の(英数字でもアンダースコアでもない)文字が含まれていると、思ったように機能しません。

于 2012-06-26T11:01:25.813 に答える
2

正規表現で使用している単語を単語境界 ( \b) で囲みます。

于 2012-06-26T11:00:20.163 に答える
2

\b正規表現の最初と最後に置きます。

于 2012-06-26T11:00:11.103 に答える