Erstes Auftreten nur eines Strings ersetzen?

74

Ich habe so etwas:

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

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

Ich möchte nur das erste "sehr" ersetzen oder auswählen, welches "sehr" überschrieben wird. Ich mache das mit viel größeren Textmengen, also möchte ich steuern, wie doppelte Wörter ersetzt werden.

jblu09
quelle
Mögliches Duplikat von Ersetzen Sie das erste Vorkommen eines Strings in Python
daveruinseverything

Antworten:

117
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.
Fred Nurk
quelle
42
text = text.replace("very", "not very", 1)

Der dritte Parameter ist die maximale Anzahl von Vorkommen, die Sie ersetzen möchten.
Aus der Dokumentation zu Python :

string.replace (s, alt, neu [, maxreplace]) Gibt
eine Kopie des Strings s zurück, wobei alle Vorkommen von alten Teilzeichenfolgen durch neue ersetzt werden. Wenn das optionale Argument maxreplace angegeben wird, werden die ersten maxreplace-Vorkommen ersetzt.

Hassan Raza
quelle
5

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

replace (alt, neu [, count])
Gibt eine Kopie der Zeichenfolge zurück, wobei alle Vorkommen von Teilzeichenfolgen alt durch neu ersetzt werden. Wenn die optionale Argumentanzahl angegeben ist, werden nur die ersten Zählvorkommen ersetzt.

Ich habe es nicht versucht, aber ich glaube, es funktioniert

Sergiol
quelle