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.


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.

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.


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.