hallo,
habe folgende .txt datei zum einlesen:
Bernd 5 3
Susi 4.50 0
Rudi 4.85 6
Katy 5.15 5
Markus 5 8
das hab ich dann so gemacht:
f=open("eingabe.txt","r")
print f.readlines()
ausgegeben wird mir eine liste, dass ja schonmal gut. nur hab ich nach jedem zeilenumbruch diese \n dingens drin. wie bekomm ich die am besten raus? oder gibt es eine andere möglichkeit die datei als liste einzulesen?
ps. bin anfänger
gruß
morpheus
datei einlesen
Probiers mal so:
Das ergibt dann bei deiner Datei folgende Ausgabe:
Erreicht wird das, weil durch das "line[:-1]" immer das letzte Zeichen der Zeile abgeschnitten wird.
Zur Indizierung bei Strings kann dir diese Seite vielleicht weiterhelfen:
http://starship.python.net/crew/gherman ... node5.html
Das wars auch schon
Code: Alles auswählen
file = open("D:/test.txt", "r") # Oeffnen der Datei
liste = [] # Anlegen der leeren Liste
for line in file: # Durchlauf durch die Zeilen der Datei
liste.append(line[:-1]) # Hinzufuegen zur Liste und vorheriges
# Abschneiden des letzten Zeichens
# einer Zeile
print liste # Ausgabe der Liste
file.close() # Schliessen der Datei
Code: Alles auswählen
['Bernd 5 3', 'Susi 4.50 0', 'Rudi 4.85 6', 'Katy 5.15 5', 'Markus 5 8']
Zur Indizierung bei Strings kann dir diese Seite vielleicht weiterhelfen:
http://starship.python.net/crew/gherman ... node5.html
Das wars auch schon

-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi Gast,
und was machst Du wenn die Datei von einem Mac kommt? Da sind die Zeilenumbrüche "\r\n" also 2 Zeichen. Und was ist, wenn bei der letzten Zeile kein Zeilenumbruch ist?
Folgenes Beispiel löscht alle "Whitespaces" am Ende jeder Zeile, also auch Zeilenumbrüche
Gruß
Dookie
und was machst Du wenn die Datei von einem Mac kommt? Da sind die Zeilenumbrüche "\r\n" also 2 Zeichen. Und was ist, wenn bei der letzten Zeile kein Zeilenumbruch ist?
Folgenes Beispiel löscht alle "Whitespaces" am Ende jeder Zeile, also auch Zeilenumbrüche
Code: Alles auswählen
f = file("test.txt", "r") # Datei öffnen
liste = [line.rstrip() for line in f] # 'Whitespaces' am Ende jeder Zeile löschen
f.close() # Datei schließen
print liste #liste ausgeben
Dookie
-
- User
- Beiträge: 2
- Registriert: Dienstag 18. Mai 2004, 15:29
beides interesannt lösungen, wäre ich nie drauf gekommen.
also der zeilenumbruch verschwindet bei beiden lösungen.
nur die tabs (\t) nicht.
bsp.: bernd \t5\t3
gibt es nicht für sowas eine methode wies in python für fast alles ne funktion gibt?
also wenn kein string (bsp. bernd) in der datei wäre, und pro zeile nur eine zahl stünde, könnte man es auch so machen:
map(int,file("test.txt"))
sonst noch irgend ne idee?
also der zeilenumbruch verschwindet bei beiden lösungen.
nur die tabs (\t) nicht.
bsp.: bernd \t5\t3
gibt es nicht für sowas eine methode wies in python für fast alles ne funktion gibt?
also wenn kein string (bsp. bernd) in der datei wäre, und pro zeile nur eine zahl stünde, könnte man es auch so machen:
map(int,file("test.txt"))
sonst noch irgend ne idee?
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi morpheus,
wenn in deinem Beispiel die \t einfach wegfallen wird daraus 53. Wenn das nicht gewollt ist kannst Du die \t auch z.B. durch Leerzeichen ersetzen lassen
Gruß
Dookie
wenn in deinem Beispiel die \t einfach wegfallen wird daraus 53. Wenn das nicht gewollt ist kannst Du die \t auch z.B. durch Leerzeichen ersetzen lassen
Code: Alles auswählen
f = file("test.txt", "r") # Datei öffnen
# 'Whitespaces' am Ende jeder Zeile löschen und Tabs durch Spaces ersetzen
liste = [line.replace(line.rstrip().replace('\t', ' ') for line in f]
f.close() # Datei schließen
print liste #liste ausgeben
Dookie
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Falls Du die einzelnen Daten in den Zeilen weiterverarbeiten willst, gehts auch so:
das if line.strip() sorgt dafür, daß Leerzeilen übersprungen werden.
Gruß
Dookie
Code: Alles auswählen
f = file("test.txt", "r") # Datei öffnen
liste = [line.split() for line in f if line.strip()]
f.close() # Datei schließen
for entry in liste: #liste ausgeben
print entry
Gruß
Dookie
Hi. Ich glaub ich hab ein besseren Vorschlag: öffne die Datei im universal Mode, dann werden alle Zeilenumbrüche als "\n" dargestellt. Nun reicht ein einfaches split und das zeilenweise Lesen ist auch nicht mehr notwendig...Dookie hat geschrieben:Hi Gast,
und was machst Du wenn die Datei von einem Mac kommt? Da sind die Zeilenumbrüche "\r\n" also 2 Zeichen. Und was ist, wenn bei der letzten Zeile kein Zeilenumbruch ist?
Code: Alles auswählen
f=file("test.txt", "U")
liste=f.read().split("\n")
f.close()