Dieser einfache Code, der einfach versucht, Semikolons (an i-angegebenen Positionen) durch Doppelpunkte zu ersetzen, funktioniert nicht:
for i in range(0,len(line)):
if (line[i]==";" and i in rightindexarray):
line[i]=":"
Es gibt den Fehler
line[i]=":"
TypeError: 'str' object does not support item assignment
Wie kann ich das umgehen, um die Semikolons durch Doppelpunkte zu ersetzen? Die Verwendung von replace funktioniert nicht, da diese Funktion keinen Index benötigt. Möglicherweise gibt es einige Semikolons, die ich nicht ersetzen möchte.
Beispiel
In der Zeichenfolge kann ich eine beliebige Anzahl von Semikolons haben, z. B. "Hei der !; Hallo ;;;"
Ich weiß, welche ich ersetzen möchte (ich habe ihren Index in der Zeichenfolge). Die Verwendung von "Ersetzen" funktioniert nicht, da ich keinen Index damit verwenden kann.
str.replace()
BIF?str.find()
stattdessen, um die Position des Semikolons zu ermitteln, und extrahieren Sie dann den Teilstring in Scheiben.Antworten:
Zeichenfolgen in Python sind unveränderlich, sodass Sie sie nicht als Liste behandeln und Indizes zuweisen können.
Verwenden Sie
.replace()
stattdessen:Wenn Sie nur bestimmte Semikolons ersetzen müssen, müssen Sie genauer sein. Sie können Slicing verwenden, um den Abschnitt der Zeichenfolge zu isolieren, der ersetzt werden soll in:
Dadurch werden alle Semikolons in den ersten 10 Zeichen der Zeichenfolge ersetzt.
quelle
Sie können Folgendes tun, um ein Zeichen durch ein entsprechendes Zeichen an einem bestimmten Index zu ersetzen, wenn Sie es nicht verwenden möchten
.replace()
quelle
Verwandeln Sie die Zeichenfolge in eine Liste. dann können Sie die Zeichen einzeln ändern. Dann können Sie es wieder zusammensetzen mit
.join
:quelle
Wenn Sie ein einzelnes Semikolon ersetzen möchten:
Havent hat es allerdings getestet.
quelle
line.replace(src,dst)
nicht.line[:10].replace(src,dst) + line[10:]
tut, aber in viel weniger Schwere. Angenommen, wir nehmen anline = ';'*12
. Ihre Lösung erstellt 12 Mal eine neue Zeichenfolge. Die akzeptierte Lösung wird dies einmal tun.Dies sollte einen etwas allgemeineren Fall abdecken, aber Sie sollten in der Lage sein, ihn für Ihren Zweck anzupassen
Hoffe das hilft
quelle
Sie können einem Zeichen in der Zeichenfolge nicht einfach einen Wert zuweisen. Verwenden Sie diese Methode, um den Wert eines bestimmten Zeichens zu ersetzen:
Ausgabe: In * ia
Wenn Sie say * für alle Vorkommen des ersten Zeichens mit Ausnahme des ersten Zeichens ersetzen möchten, z. string = babble output = ba ** le
Code:
quelle
Wenn Sie durch einen in der Variablen 'n' angegebenen Indexwert ersetzen, versuchen Sie Folgendes:
quelle
Um die .replace () -Methode effektiv für Zeichenfolgen zu verwenden, ohne eine separate Liste zu erstellen, werfen Sie beispielsweise einen Blick auf den Listenbenutzernamen, der eine Zeichenfolge mit einem Leerzeichen enthält. Wir möchten den Leerraum durch einen Unterstrich in jeder Zeichenfolge des Benutzernamens ersetzen.
Um die Leerzeichen in jedem Benutzernamen zu ersetzen, sollten Sie die Bereichsfunktion in Python verwenden.
quelle
Wie wäre es damit:
quelle
Um ein Zeichen an einem bestimmten Index zu ersetzen, lautet die Funktion wie folgt:
Dabei ist s eine Zeichenfolge, n ein Index und c ein Zeichen.
quelle
Ich habe diese Methode geschrieben, um Zeichen oder Zeichenfolgen an einer bestimmten Instanz zu ersetzen. Instanzen beginnen bei 0 (dies kann leicht in 1 geändert werden, wenn Sie das optionale Argument inst in 1 und die Variable test_instance in 1 ändern.
quelle
Du kannst das:
quelle
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
Benutzernamen = []
o, p Joey_Tribbiani Monica_Geller Chandler_Bing Phoebe_Buffay
quelle