2016-05-28 3 views
-1

Ich versuche, eine Python-Anwendung zum Konvertieren von alten DOS-Codepage-Textdateien in ihre Unicode-Entsprechung zu schreiben. Nun, ich habe dies getan, bevor ich Turbo Pascal benutzt habe, indem ich eine Nachschlagetabelle erstellt habe, und ich bin mir sicher, dass dasselbe mit einem Python-Wörterbuch gemacht werden kann. Meine Frage lautet: Wie indiziere ich in das Wörterbuch, um das Zeichen zu finden, das ich konvertieren möchte, und den entsprechenden Unicode an eine Unicode-Ausgabedatei zu senden?Konvertieren von DOS-Textdateien in Unicode mit Python

Ich realisiere, dass dies eine Wiederholung einer ähnlichen Frage sein kann, aber nichts, das ich hier suchte, entspricht ziemlich meiner Frage.

+1

Eigentlich Sie nicht eine Frage stellen hat. Du hast ein Problem gemeldet. SO geht es mehr darum, Fragen zu beantworten. Um eine Antwort zu erhalten, schlage ich vor, etwas zu versuchen, und wenn es nicht funktioniert, poste deinen Code und bitte um Rat. – RobertB

+0

Möchten Sie wirklich selbst nachschlagen? Python hat viele eingebaute Kodierungen: https://docs.python.org/3/library/codecs.html#standard-encodings – MaxNoe

Antwort

0

können Sie Standard Bui decode Methode der bytes Objekte verwenden:

with open('dos.txt', 'r', encoding='cp437') as infile, \ 
     open('unicode.txt', 'w', encoding='utf8') as outfile: 
    for line in infile: 
     outfile.write(line) 
+0

In Python 2 ist die Standardkodierung für 'unicode.txt'' ascii' und in Python 3 wird es 'locale.getpreferredencoding()' sein (auf US-Windows 'cp1252'). Dies funktioniert nicht, wenn Sie Python 3 und ein Betriebssystem verwenden, das beispielsweise auf UTF-8 eingestellt ist. Weder unterstützen die gesamte Palette von cp437 Zeichen. –

1

Python die Codecs die Konvertierungen zu tun hat:

#!python3 

# Test file with bytes 0-255. 
with open('dos.txt','wb') as f: 
    f.write(bytes(range(256))) 

# Read the file and decode using code page 437 (DOS OEM-US). 
# Write the file as UTF-8 encoding ("Unicode" is not an encoding) 
# UTF-8, UTF-16, UTF-32 are encodings that support all Unicode codepoints. 

with open('dos.txt',encoding='cp437') as infile: 
    with open('unicode.txt','w',encoding='utf8') as outfile: 
     outfile.write(infile.read()) 
Verwandte Themen