Seite 1 von 1
Umlaute aus einem String ersetzen
Verfasst: Mittwoch 27. Oktober 2021, 02:44
von PeterL
Hallo Leute,
Code: Alles auswählen
pgntag=("Äpfel")
pgntag = pgntag.replace("Ä","Ae")
print(pgntag)
Aus einer Zeichenkette mit nur einer Zeile kann ich ohne Probleme Sonderzeichen
äüö ersetzten. Benutze ich einen String indem mehrere Zeilen enthalten sind, in meinem
Beispiel währe das eine Schachpartie.
Code: Alles auswählen
[Event "8th RUS-CHN Summit Men Classical"]
[Site "St Petersburg RUS"]
[Date "2012.07.02"]
[Round "1"]
[White "üMuster Mann"] <<< Hier möcte ich das ü durch ue ersetzten
[Black "Jakovenko,D"]
[Result "1/2-1/2"]
[WhiteTitle "GM"]
[BlackTitle "GM"]
[WhiteElo "2739"]
[BlackElo "2736"]
[ECO "C45"]
[Opening "Scotch"]
[Variation "Potter variation"]
[WhiteFideId "8602883"]
[BlackFideId "4122356"]
[EventDate "2012.07.02"]
1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4.
Jetzt ist es mir nicht mehr möglich
das ü durch ue
mittels replace zu ersetzten. Kann mir jemand bitte helfen..
Bis die Tage...
Re: Umlaute aus einem String ersetzen
Verfasst: Mittwoch 27. Oktober 2021, 04:51
von Sirius3
Warum ist es dir nicht möglich? Gibt es eine Fehlermeldung? Dann wäre es nett zu erfahren, wie sie lautet, zusammen mit dem Code.
Wenn man raten müsste: Du hast keinen String, sondern eine Liste mit Strings. Dann müsstest Du mittels Schleife replace auf jedes Element einzeln anwenden.
Re: Umlaute aus einem String ersetzen
Verfasst: Mittwoch 27. Oktober 2021, 05:27
von PeterL
Sirius3 hat geschrieben: Mittwoch 27. Oktober 2021, 04:51
Wenn man raten müsste: Du hast keinen String, sondern eine Liste mit Strings. Dann müsstest Du mittels Schleife replace auf jedes Element einzeln anwenden.
Hallo Sirius3,
Ich lese die Schachpartien aus einer großen Datei ein.
Ich habe in der Pgndatei einigen Spielern das ä ö ü angehängt, und das wollte ich durch
ae usw. ersetzen. Benutze ich Print(line) so erhalte ich diese Ausgabe:
Es sieht so aus als ob das ö ä ü nicht richtig eingelesen werden.
Ich habe auch schon:
benutzt.
In einer Zeichenkette geht das:
Code: Alles auswählen
text = "äi , I'm text"
text.encode('utf-8')
text=text.replace('ä', 'ae')
print(text)
aei I m text
Bis die Tage...
Re: Umlaute aus einem String ersetzen
Verfasst: Mittwoch 27. Oktober 2021, 06:02
von pillmuncher
@PeterL:
Code: Alles auswählen
text = "äi , I'm text"
text.encode('utf-8')
text=text.replace('ä', 'ae')
print(text)
aei I m text
Was passiert, wenn du die zweite Zeile weglässt? Was ist der Unterschied?
Re: Umlaute aus einem String ersetzen
Verfasst: Mittwoch 27. Oktober 2021, 06:13
von PeterL
pillmuncher hat geschrieben: Mittwoch 27. Oktober 2021, 06:02
@PeterL:
Code: Alles auswählen
text = "äi , I'm text"
text.encode('utf-8')
text=text.replace('ä', 'ae')
print(text)
aei I m text
Was passiert, wenn du die zweite Zeile weglässt? Was ist der Unterschied?
Hallo pillmuncher,
Es gibt keinen Unterschied.
Ich wollte nur zeigen das eine Zeichenkette die nur eine Reihe hat, die Umlaute
mit replace ersetzt werden können.
Ich habe das was gefunden.
Code: Alles auswählen
import codecs
with codecs.open('pgn/test.pgn', encoding='utf-8') as f:
for line in f:
line= (repr(line))
print(line)
Die Pgndatei wird mir dann so ausgegeben:
Code: Alles auswählen
'[Event "8th RUS-CHN Summit Men Classical"]\r\n'
'[Site "St Petersburg RUS"]\r\n'
'[Date "2012.07.02"]\r\n'
'[Round "1"]\r\n'
'[White "Nepomniachtchi,I"]\r\n'
'[Black "üMustermann"]\r\n'
Mit allen Sonderzeichen äüö usw...
Später teste ich weiter.
Bis die Tage...
Re: Umlaute aus einem String ersetzen
Verfasst: Mittwoch 27. Oktober 2021, 06:41
von pillmuncher
PeterL hat geschrieben: Mittwoch 27. Oktober 2021, 06:13
Es gibt keinen Unterschied.
Ich wollte nur zeigen das eine Zeichenkette die nur eine Reihe hat, die Umlaute
mit replace ersetzt werden können.
Zeichenketten haben keine Reihen.
PeterL hat geschrieben: Mittwoch 27. Oktober 2021, 06:13
Ich habe das was gefunden.
Code: Alles auswählen
import codecs
with codecs.open('pgn/test.pgn', encoding='utf-8') as f:
for line in f:
line= (repr(line))
print(line)
Was, meinst du, machen die äußeren Klammern hier:
(repr(line))? Und was glaubst du, was
repr(line) macht? Was hast du dir dabei gedacht, als das hingeschrieben hast?
Und was würde passieren, wenn du statt
codecs.open() einfach nur
open() verwenden würdest?
Re: Umlaute aus einem String ersetzen
Verfasst: Mittwoch 27. Oktober 2021, 06:51
von PeterL
PeterL hat geschrieben: Mittwoch 27. Oktober 2021, 06:13
Hallo,
ich weis nicht was passiert wenn ich Klammern wegnehme.
Ich habe den Code aus dem Netz. ich habe mich damit noch nicht weiter
beschäftigt.
Ich habe aber ein super Beispiel gefunden was ich auch verstehe.
Ich habe viel im Netz gelesen.
Code: Alles auswählen
with open('pgn/test.pgn', 'r' ,encoding='utf-8') as pgn_file:
for line in pgn_file:
line=line.replace('ü','ue')
Alle Sonderzeichen wie öüä werden angezeigt, und ich kann mit replace die
Sonderzeichen ändern in ae usw. Abspeichern geht auch.
Das r am Anfang von Open wahr wohl der Fehler.
Code: Alles auswählen
with open(r'pgn/test.pgn', 'r' ,encoding='utf-8') as pgn_file:
Also ich bin zufrieden...
Bis die Tage...