Wie übersetze ich einen Text in Braille-Vollschrift aus einer Textdatei in Normalschrift mit Hilfe eines Wörterbuchs in Python 3?
Hallo, ich belege einen Kurs für Nichtinformariker und kenne mich auf dem Gebiet kaum aus.
Diese Aufgabe lautet: Schreiben Sie ein Programm, das die Datei braille.txt einließt, die in deutscher Braille-Vollschrift verfasst ist. Die Datei soll in Schwarzschrift-Buchstaben übersetzt und ausgegeben werden, wobei Leerzeichen und Zeilenumbrüche unverändert ausgegeben werden sollen. Verwenden Sie da zu ein Dictionary, um Braille-Zeichen auf lateinische Zeichen abzubilden.
Ich probiere schon sei Tagen rum und mein erstes Programm, das mir überhaupt ein Ergebnis, wenn auch nicht brauchbares, liefert, ist auf dem Bild zu sehen.
Ich bitte um Hilfe, Korrektur und kurze Erläuterung. Vielen Dank!
1 Antwort
Du bist ein Scherzkeks xD
Du gibst mit print (word) die komplette map aus. Du musst auch
word = vollschrift_schwarzschrift.get(letter);
machen. mit values() gibst du der Variable word alle values als wert
Ich benutze für Screenshot das Programm Greenshot. Damit kannste einen Bereich auswählen und direkt auf Imgur hochladen, mach das Programm automatisch. Dann kannste hier den Link posten.
Ich würd es aber noch etwas anders machen
text = f.read()
characters = list(text)
for c in characters:
if(c in vollschrift_schwarzschrift):
print (vollschrift_schwarzschrift.get(c))
else:
print (c)
Code ohne Gewähr. Bin kein Python Entwickler ;-) Sollte aber rein von der Logik her funktionieren.
Also ich arbeite ohne Liste, aber mit Wörterbuch. Den Text 'zu listen' macht für mich grade keinen Sinn. So angewendet auf das Wörterbuch, komme ich nicht zur Lösung. Aber danke.
list(test) macht jeden Buchstaben einzeln. Deswegen hab ich list(text) genommen.
https://stackoverflow.com/questions/4978787/how-to-split-a-string-into-array-of-characters
Du kannst du dann alles durch gehen und wenn ein leer zeichen dazwischen ist, wird dieses einfach übersprungen, weils ja nicht in dem Dict drin ist.
Okay, danke, verstanden. 👍 dann erhalte ich im Output alle Buchstaben in der richtigen Reihenenfolge untereinander aufgelistet, aber keinen vollständigen Text, der mit Leerzeichen und Absätzen aus dem Beispieltext übereinstimmt.
Wie würde ich daraus wieder einen Text erhalten?
Eigentlich müsste das gehen, es sei denn das else: funktioniert nicht.
text = f.read()
characters = list(text)
for c in characters:
if(c in vollschrift_schwarzschrift):
print (vollschrift_schwarzschrift.get(c))
else:
print (c)
eigentlich sollte print(c) das leerzeichen mit ausspucken...Lass dir mal mit print(characters) alle Character ausgeben, ob dort Leerzeichen drin sind.
Es geht, aber weil ich mit einer Liste arbeite, bekomme ich jedes Zeichen übersetzt untereinander aufgelistet. Ich erhalte keinen vollständigen Text wie in 'text'.
dann mach einfach folgendes
text = f.read()
characters = list(text)
newText = ""
for c in characters:
if(c in vollschrift_schwarzschrift):
newText += vollschrift_schwarzschrift.get(c)
else:
newText += c
print (newText)
Jaaaaa, das klappt! Ich muss ehrlich sagen, dass ich auf so eine Lösung niemals gekommen wäre. Auch wenn ich sie, auch dank deiner Erläuterung, gut nachvollziehen kann. Herzlichen Dank!!!
Kein Thema ;-) Ich kann, wie schon bereits erwähnt, kein Python. Arbeite selbst aber seit gut 10 Jahren mit Java und weiß daher, wie man das ein oder andere machen kann.
Schade, dass ich kein Bild ins Kommentar stellem kann.
Das habe ich so verbessert und erhalte als Output 4 untereinander stehende Kreise, sollte aber ein Gedicht erhalten.