web-dev-qa-db-ja.com

文字列の最初の出現のみを置き換えますか?

私はこのようなものを持っています:

text = 'This text is very very long.'
replace_words = ['very','Word']

for Word in replace_words:
    text = text.replace('very','not very')

最初の「非常に」のみを置き換えるか、どの「非常に」が上書きされるかを選択したいと思います。大量のテキストでこれを行っているので、重複する単語の置換方法を制御したいと思います。

53
jblu09
text = text.replace("very", "not very", 1)
>>> help(str.replace)
Help on method_descriptor:

replace(...)
    S.replace (old, new[, count]) -> string

    Return a copy of string S with all occurrences of substring
    old replaced by new.  If the optional argument count is
    given, only the first count occurrences are replaced.
88
Fred Nurk
text = text.replace("very", "not very", 1)

3番目のパラメーターは、置換するオカレンスの最大数です。
From Pythonのドキュメント

string.replace(s、old、new [、maxreplace])
部分文字列oldのすべての出現をnewに置き換えて、文字列sのコピーを返します。オプションの引数maxreplaceが指定されている場合、最初のmaxreplaceの出現が置き換えられます。

29
Hassan Raza

http://docs.python.org/release/2.5.2/lib/string-methods.html から:

replace(old、new [、count])
部分文字列oldのすべての出現をnewに置き換えた文字列のコピーを返します。オプションの引数countが指定されている場合、最初に出現したもののみが置き換えられます。

試しなかったが、うまくいくと思う

3
sergiol