Breaks von Textdateien übernehmen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
MacEvil
User
Beiträge: 52
Registriert: Mittwoch 21. Januar 2004, 21:40

Hallo,

es werden alle Breaks in einem nicht von meinem TextEditor erstellen TextFile irgendwie ignoriert. Wenn ich aber mit meinem Programm eine Datei mit Breaks speichere und es wieder öffne funktioniert es.

Hab mal irgendwo gesehen es gibt "\ r" und "\ n".. ohne Whitespace
Möge die Python-Community gedeihen
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Hi. Hast du Scripte zwischen den Plattformen ausgetauscht? Da musst dus chon beachten, dass es da verschiedene Zeileinsprünge gibt: unter win "\r\n", unter Linux "\n" und unter Mac nur "\r". Sowas musst du natürlich vorher konvertieren, da die sonst mit übernommen werden, aber auf einer anderen Plattform dann quasi ungültig sind :wink:
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi MacEvil,

Python2.3 bietet auch Universal Newline Support. Das heisst, \n, \r\n und \r werden wenn eine Datei mit dem Modus U geöffnet wird beim lesen wie ein einfaches \n behandelt.
Bei einem guten Texteditor, kannst Du auch einstellen welchen Zeilenumbruch er verwendet.


Gruß

Dookie
MacEvil
User
Beiträge: 52
Registriert: Mittwoch 21. Januar 2004, 21:40

@ Milan,

nein, immer unter MacOSX. Wobei das ja Mac und Unix ist.

@ Dookie,

Super, funkt prima :D
Möge die Python-Community gedeihen
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Ich kenn mich mit Mac Systemen allgemein nicht aus... nur so aus Neugier: verwendet MacOSX nun als Mischling zwei unterschiedliche Linesep's ? Oder liegt die Ursache davon vielleicht doch woanders?

Ansonsten hättest du bei früheren Pythonversionen auch etwas Arbeitsspeicherlastiger vergehen können:

Code: Alles auswählen

text=open('datei.txt','rb').read()
text=text.replace('\r\n','\n').replace('\r','\n')
Dann hättest du die ganze Datei in text und kannst sie so bearbeiten. Wenn man sie dann zeilenweise haben will, macht man einfach text.split('\n').

Milan
MacEvil
User
Beiträge: 52
Registriert: Mittwoch 21. Januar 2004, 21:40

Ne, ich glaub Mac OSX hat r+n.. aber wahrscheinlich ist es ein Fehler des Text Widgets (Tkinter), denn sonst hatte ich noch nie Probleme damit
Möge die Python-Community gedeihen
Antworten