Python 3 ist unicode utf-8-Datei

Ich versuche zu analysieren, die durch eine log-Datei, aber das format der Datei ist immer in unicode. Meine übliche Prozess möchte ich gerne automatisieren:

  • Ziehe ich die Datei in notepad
  • Speichern unter...
  • ändern der Codierung von unicode zu UTF-8
  • Dann führen Sie python-Programm auf Sie

So, in diesem Prozess möchte ich gerne automatisieren in Python 3.4. Ziemlich viel hat sich geändert, die Datei zu UTF-8 oder so etwas wie open(filename,'r',encoding='utf-8') obwohl diese exakte Linie warf mich diese Fehlermeldung, wenn ich versuchte zu rufen, Lesen() auf:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

Wäre es EXTREM hilfreich, wenn ich könnte konvertieren die gesamte Datei (wie in meinem ersten Szenario), oder öffnen Sie einfach das ganze in UTF-8, die Art und Weise habe ich nicht auf die str.encode (oder so ähnlich) jedes mal, wenn ich analysieren einer Zeichenfolge.

Jemand mitgemacht und weiß, welche Methode ich verwenden soll und wie es zu tun?

EDIT:

In der Python ist3 repr, ich habe

>>> f = open('file.txt','r')
>>> f
(_io.TextIOWrapper name='file.txt' mode='r' encoding='cp1252')

So, jetzt mein python-code in mein Programm öffnet die Datei mit open('file.txt','r',encoding='cp1252'). Ich arbeite mit einer Menge von regex suchen über diese Datei, obwohl, und es ist nicht Kommissionierung es bis (ich glaube es, weil es nicht utf-8). So muss ich nur noch herausfinden, wie die Schalter von cp1252 auf UTF-8. Danke @Mark Lösegeld

  • Sie müssen herausfinden, die Codierung, die der original-Datei, und verwenden, statt utf-8 wenn Sie die Datei öffnen.
  • Wie mache ich das? Denn wenn ich auf "speichern" klicken, wie im Editor, es sagte nur unicode
  • Okay, ich hab schon fast got it! In der Python ist3 repr ich herausgefunden, dass die Codierung der Datei ist cp1252. Jetzt denke ich, ich muss nur konvertieren zu utf-8 direkt nach dem öffnen der Datei
  • Python nicht analysieren der Datei, um herauszufinden, welche Codierung er verwenden soll, es nimmt halt den Standard für Ihre Windows-Umgebung. Notizblock auf der anderen Seite hat versuchen zu analysieren, die Datei. Wenn er sagt, Unicode, ist es wahrscheinlich utf-16le - versuchen.
  • wie wandle ich das auf utf-8?
  • Warum brauchen Sie, um zu konvertieren? Wenn Sie die Datei öffnen mit encoding='utf-16' sollten Sie die richtige Unicode-strings Lesen Sie die Datei, und das Programm wird "einfach funktionieren".
  • Das ist es nicht. Ich Schreibe, was ich lese auf eine andere Datei jedes mal und es ist Druck-Zeichen, die Aussehen wie Müll-code. Ich kann auch nicht drucken Sie es. Es sagt UnicodeEncodeError
  • Sie müssen auch verwenden encoding=... auf die Datei, die Sie schreiben. Sie brauchen nicht die gleichen zu sein, und es klingt von dem, was Sie gesagt haben, dass, sollte die Ausgabe in utf-8. Erwarte nicht, dass Windows in der Lage sein zu öffnen, einen utf-8-Datei und Sinn machen, obwohl es, das ist nicht seine native Zeichensatz.

InformationsquelleAutor Jeremy | 2015-02-11
Schreibe einen Kommentar