Seite 1 von 1
Kyrillisch suchen und ersetzen
Verfasst: Donnerstag 25. Februar 2021, 17:55
von michi-monster
Hallo, ich habe ein Programm mit dem ich bestimmte Sachen suchen und ersetzen will. In Englisch funktioniert es. In Russisch wird die Datei nur überschrieben. Es wird die Datei leer angezeigt nach Ausführung des Scriptes.
Code: Alles auswählen
#/usr/bin/pyhton3
import fileinput
import re
datei=fileinput.FileInput("ru-txt.txt",inplace=True,backup=".bak")
for line in datei:
line=re.sub(r"Инструкции","Anleitung",line)
line=re.sub(r"белый","weiss",line)
line=re.sub(r"чернить","schwarz",line)
line=re.sub(r"ряд","Runde",line)
line=re.sub(r"сбн","fM",line)
Der Zeichencode ist auf dem OS installiert.
Code: Alles auswählen
michi@michi-debian:~/python$ locale -a
C
C.UTF-8
de_DE
de_DE@euro
de_DE.iso88591
de_DE.iso885915@euro
de_DE.utf8
deutsch
en_GB
en_GB.iso88591
en_GB.utf8
german
POSIX
ru_RU.utf8
michi@michi-debian:~/python$
Was kann ich tun bzw. wo liegt das Prob?
Re: Kyrillisch suchen und ersetzen
Verfasst: Donnerstag 25. Februar 2021, 18:55
von Sirius3
Das hat nichts mit russisch oder englisch zu tun, sondern, daran, dass fileinput so funktioniert, wie Du denkst.
Das Modul biegt stdout um, und ist daher sehr speziell.
Warum willst Du konstanten Text per regulärem Ausdruck ersetzen? Sowas würde man auch mit einer entsprechenden Datenstruktur machen, wie Dir auch schon vor einiger Zeit nahegelegt wurde.
Es heißt python3 und nicht pyhton3.
Code: Alles auswählen
#!/usr/bin/python3
import re
REPLACEMENTS = [
("Инструкции", "Anleitung"),
("белый", "weiss"),
("чернить", "schwarz"),
("ряд", "Runde"),
("сбн", "fM"),
]
def main():
with open("ru-txt.txt", encoding="utf8") as input:
with open("ru-txt.out", encoding="utf8", mode="w") as output:
for line in input
for text, replacement in REPLACEMENTS:
line = line.replace(text, replacement)
output.write(line)
if __name__ == "__main__";
main()
Re: Kyrillisch suchen und ersetzen
Verfasst: Donnerstag 25. Februar 2021, 19:00
von michi-monster
Ich bitte um Nachsicht: ich bin noch ziemliche Anfängerin. Das Beispiel habe ich im Netz gefunden und eben nur angepasst. Als es in Englisch funktioniterte war ich happy. Najut. Ich muss nochmal recherchieren und russisch einfacher anfangen.
Re: Kyrillisch suchen und ersetzen
Verfasst: Donnerstag 25. Februar 2021, 19:09
von michi-monster
Über nem replace funktioniert es. Da wird das kyrillisch auch angezeigt. ok, ich werd nochmal fummeln
michi@michi-debian:~$ cd python/
michi@michi-debian:~/python$ nano -w versuch.py
michi@michi-debian:~/python$ python versuch.py
круглый
michi@michi-debian:~/python$ nano -w versuch.py
michi@michi-debian:~/python$ python versuch.py
круглый
Übersetzter Text: Runde
michi@michi-debian:~/python$
Re: Kyrillisch suchen und ersetzen
Verfasst: Sonntag 28. Februar 2021, 22:10
von LeSchakal
Code: Alles auswählen
REPLACEMENTS = [
("Инструкции", "Anleitung"),
("белый", "weiss"),
("чернить", "schwarz"),
("ряд", "Runde"),
("сбн", "fM"),
]
Nur eine kleine Anmerkung, da ich nicht weiß, wie gut du Russisch kannst:
"чернить" bedeutet "(an)schwärzen"
"чёрный" (bzw. черный, da die Punkterln meist nicht geschrieben werden) wäre "schwarz".