Wie konvertiere ich LF nach CRLF?

7

Ich habe online eine Liste der meisten englischen Wörter gefunden, aber die Zeilenumbrüche sind unix-artig (kodiert in Unicode: UTF-8). Ich habe es auf dieser Website gefunden: Ссылка

Wie konvertiere ich die Zeilenumbrüche nach CRLF, damit ich sie überstreichen kann? Das Programm, mit dem ich sie benutzen werde, durchläuft jede Zeile in der Datei, also müssen die Wörter eins pro Zeile sein.

Dies ist ein Teil der Datei: bitbackbitebackbiterbackbitersbackbitesbackbitingbackbittenbackboard

Es sollte sein:

%Vor%

Wie kann ich meine Dateien in diesen Typ konvertieren? Hinweis: Es sind 26 Dateien (eine pro Buchstabe) mit insgesamt 80.000 Wörtern (das Programm sollte also sehr schnell sein).

Ich weiß nicht, wo ich anfangen soll, weil ich noch nie mit Unicode gearbeitet habe. Vielen Dank im Voraus!

Verwenden von rU als Parameter (wie vorgeschlagen), mit diesem in meinem Code:

%Vor%

Ich bekomme diesen Fehler:

%Vor%

Kann mir jemand dabei helfen?

    
Rushy Panchal 19.12.2012, 14:47
quelle

3 Antworten

16

Anstatt zu konvertieren, sollten Sie in der Lage sein, die Datei einfach mit Pythons universellen Newline-Unterstützung :

%Vor%

(Beachten Sie die U .)

    
NPE 19.12.2012, 14:53
quelle
9

Sie können die Methode replace von Strings verwenden. Wie

%Vor%

BEARBEITEN:
in deinem Fall:

%Vor%     
dugres 19.12.2012 14:51
quelle
2

Sie müssen die Zeilenenden in den Dateien nicht konvertieren, um über sie iterieren zu können. Wie von der NPE vorgeschlagen, verwenden Sie einfach pythons universellen Zeilenmodus .

Der UnicodeDecodeError passiert, weil die Dateien, die Sie verarbeiten, als UTF-8 codiert sind und wenn Sie versuchen, den Inhalt von Bytes in einen String über str(line) zu dekodieren, verwendet Python die cp1252 Kodierung, um die gelesenen Bytes zu konvertieren aus der Datei in eine Python 3-Zeichenfolge (dh eine Sequenz von Unicode-Codepunkten). Es gibt jedoch Bytes in diesen Dateien, die nicht mit der Codierung cp1252 decodiert werden können und die einen UnicodeDecodeError verursachen.

Wenn Sie str(line) in line.decode('utf-8') ändern, sollten Sie UnicodeDecodeError nicht mehr erhalten. Schau dir die Text Vs. Daten anstelle von Unicode Vs. 8-bit writeup für weitere Details.

Schließlich finden Sie möglicherweise auch Das absolute Minimum, das jeder Software-Entwickler unbedingt, unbedingt über Unicode und Zeichensätze wissen muss (keine Ausreden !) von Joel Spolsky nützlich.

    
Eric Rahmig 19.12.2012 22:30
quelle

Tags und Links