2015-12-21 4 views
9

Wenn die Datei Zeile für Zeile gedruckt wird, fügt der Code normalerweise drei unnötige Zeichen hinzu, nämlich "ï» ¿".Warum druckt mein Python-Code beim Lesen aus einer Textdatei die zusätzlichen Zeichen "ï"?

tatsächliche Ausgang:

Man said: Is this the right room for an argument? 
Other Man said: I've told you once. 
Man said: No you haven't! 
Other Man said: Yes I have. 

Erwartete Ausgabe:

Man said: Is this the right room for an argument? 
Other Man said: I've told you once. 
Man said: No you haven't! 
Other Man said: Yes I have. 
+3

Ihre Datei ist wahrscheinlich in UTF-8 __with__ BOM codiert. Wenn dies nicht das ist, was Sie wollen, codieren Sie es _ohne_BOM. –

+1

Mögliches Duplikat von [Wie entferne ich ï »¿vom Anfang einer Datei?] (Http://stackoverflow.com/questions/3255993/how-do-i-remove-%c3%af-from-the- Anfang einer Datei) –

+5

@MarcB Nicht ein Betrüger von dem; Python ist kein PHP und hat bessere Optionen für die Handhabung der UTF-8-Stückliste. OP, passiere 'encoding = 'utf-8-sig'' zu deinem' open() 'Aufruf. – senshin

Antwort

23

ich nicht ein Duplikat dieser für Python 3, die 2. Codierungen finden anders als Python Griffe So Hier ist die Antwort: Anstatt die Datei mit der Standardcodierung ('utf-8') zu öffnen, verwenden Sie 'utf-8-sig', dieerwartet und entfernt, was sich als  zeigt.

Das heißt, statt

data = open('info.txt') 

data = open('info.txt', encoding='utf-8-sig') 

Hinweis Tun Sie das, wenn Sie auf Python sind 2, sollten Sie sehen, zum Beispiel Python, Encoding output to UTF-8 und Convert UTF-8 with BOM to UTF-8 with no BOM in Python. Sie müssen einige Shenanigans mit codecs oder mit str.decode ausführen, damit dies in Python 2 funktioniert. In Python 3 müssen Sie lediglich den Parameter encoding= beim Öffnen der Datei festlegen.

0

Ich hatte ein sehr ähnliches Problem im Umgang mit Excel-CSV-Dateien. Anfangs hatte ich meine Datei aus den Dropdown-Optionen als .csv utf-8 (kommagetrennte) Datei gespeichert. Dann speicherte ich es als nur eine .csv (Komma getrennte) Datei und alles war gut. Vielleicht gibt es ein ähnliches Problem mit einer .TXT-Datei

Verwandte Themen