Was ist die pythischste Art, Zeilen in einer Zeichenkette zu normalisieren?

7

Wie sieht es am besten aus, wenn eine Textzeichenfolge unbekannter Quelle existiert, um eine bekannte Zeilenende-Konvention zu haben?

Normalerweise mache ich:

%Vor%

... aber das behandelt nicht "gemischte" Textdateien von völlig konfusen Konventionen (Ja, sie existieren noch!).

Bearbeiten

Der Oneliner von dem, was ich mache, ist natürlich:

%Vor%

... darum bitte ich nicht.

Die Gesamtzahl der Zeilen sollte danach gleich sein, also keine Leerzeilen mehr entfernen.

Testfälle

Teilen

%Vor%

.. sollte alle zu 5 Zeilen führen. In einem gemischten Kontext wird bei Splitlines davon ausgegangen, dass '\ r \ n' eine einzelne logische Newline ist, die zu 4 Zeilen für die letzten beiden Testfälle führt.

Hm, ein gemischter Kontext, der '\ r \ n' enthält, kann durch Vergleichen des Ergebnisses von splitlines () und split ('\ n') und / oder split ('\ r') ...     

kaleissin 17.11.2009, 15:02
quelle

3 Antworten

12
%Vor%

sollte alle möglichen Varianten behandeln.

    
dottedmag 17.11.2009 16:04
quelle
7
  

... aber das behandelt nicht "gemischte" Textdateien von völlig konfusen Konventionen (Ja, sie existieren noch!)

Eigentlich sollte es gut funktionieren:

%Vor%

Welche Version von Python verwenden Sie?

BEARBEITEN: Ich sehe immer noch nicht, wie splitlines() nicht für dich funktioniert:

%Vor%

Soweit ich weiß, teilt splitlines() die Liste nicht zweimal oder so.

Können Sie ein Beispiel der Art der Eingabe einfügen, die Ihnen Probleme bereitet?

    
Steve Losh 17.11.2009 15:14
quelle
0

Gibt es noch mehr Konventionen als \r\n\ und \n ? Ersetzen Sie einfach \r\n , wenn Sie keine Zeilen möchten.

%Vor%     
Jochen Ritzel 17.11.2009 15:20
quelle

Tags und Links