Textdatei mit unterschiedlich vielen Leerzeichen splitten

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
scandium
User
Beiträge: 25
Registriert: Montag 26. Januar 2015, 18:52

Hallo Zusammen,

beim Textfile einlesen und splitten nutze ich folgende Befehle:

Code: Alles auswählen

inhalt = [line.rstrip() for line in open('textfile.txt')]
splitted=inhalt[i].split(" ")
Dann schaue ich an welcher Position die Werte in "splitted" sind verwerte sie weiter
Leider ist die Methode problematisch wenn Zahlenwerte in der Datei negativ werden. Das Minuszeichen belegt ein Leerzeichen und die Sortierung kommt durcheinander.
Hier ein Beispiel aus der Textdatei:
"1011 c- -0.38 mis IS_MA[1011] min + 21012518 2111 56027395 1.10 1.00 1.00 293 142 45 16 1066 343 -1 83 26 8 789 255 -1 59 19 8 276 88"

Hat jemand einen Tipp wie man den String splittet unabhängig von der Anzahl der Leerzeichen ?

Danke.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Mit regulären Ausdrücken (Modul 're' der Standardlibrary).
BlackJack

@scandium: Mit `split()` ohne Argument.

Was ist das eigentlich für ein `i` in der zweiten Zeile? Ich hoffe mal du gehst `inhalt` nicht mit einer Schleife über einen Laufindex durch‽
scandium
User
Beiträge: 25
Registriert: Montag 26. Januar 2015, 18:52

Danke, mit split ohne Argument sieht es gut aus.
Ich muss es noch komplett durch testen, aber genau das schein es zu sein.


Eine Frage die mich noch interessiert:
mit welchen Befehl kann ich in der Python Console in das Verzeichnis schauen, wo das Script ausgeführt wird.
Ich möchte gerne die Files gelisted haben, die sich dort befinden.
Mit "dir" oder "ls" hatte ich keinen Erfolg.
BlackJack

@scandium: In der Standard-Python-Shell kannst Du nur Python-Code ausführen. Da müsstest Du dann zum Beispiel ``os.listdir('.')`` verwenden um eine Liste mit den Dateinamen im aktuellen Arbeitsverzeichnis zu bekommen.

Die IPython-Shell kann externe Programme/Befehle mit einem vorangestellten Ausrufezeichen ausführen (lassen).
scandium
User
Beiträge: 25
Registriert: Montag 26. Januar 2015, 18:52

@BlackJack
Wie lade ich das "os" modul ?

beim Aufruf von: "os.listdir('.')"
bekomme ich folgende Fehlermeldung:

"Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'os' is not defined"
BlackJack

@scandium: An der Stelle alles stehen und liegen lassen und das Tutorial in der Python-Dokumentation durcharbeiten. :-)
scandium
User
Beiträge: 25
Registriert: Montag 26. Januar 2015, 18:52

Das hatte ich sogar vor der Frage gemacht...
https://docs.python.org/3.4/library/os.html

import os, hätte ich ehr am Anfang erwartet.
Anders rum hätte man auch selbst drauf kommen können :D

Nächstes mal werfe ich noch mal ein Auge auf die Beispiele, da hätte es auf jeden Fall gestanden.
Antworten