Splitten in Python

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
Chibi
User
Beiträge: 22
Registriert: Samstag 7. November 2009, 12:10

Hi, ich fange grade aufgrund meines Studiums an mich mit Python zu beschäftigen.

Hätte da mal ne Anfänger Frage. Hab mich zu meinem Problem auch schon mit dem split Befehl auseinandergesetzt, aber das klappt nicht so ganz.

Also ich lese mit dem Befehlen

Code: Alles auswählen

fileName = raw_input("Gebe einen Dateinamen ein: ")

fobj = open(fileName, "r") 


for line in fobj: 
    print line 

fobj.close() 
die Datei ein und lass sie mir ausgeben. Die Datei enthält viele Informationen

Ich möchte aber jetzt zB nur diesen fettgedruckten Teil ausgegeben haben

Species in order:

1. F2.CM.95.M
2. F2.CM.95b
3. F1.FR.96.M
4. F1.BE.93.V
5. 00-0134
6. 00-0160
7. 00-0036
8. 00-0107
9. 00-0279
10. 00-0252

11. B.US.83.RF
12. 00-0162
13. B.US.90.WE
14. 00-0161
15. 00-0271
16. 00-0278
17. 00-0285
18. 00-0014
19. 00-0005
20. 00-0350



Wie realisieren ich das am besten? Für Tips wäre ich sehr dankbar
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Hallo Chibi,

dafür gibts sicherliche hunderte Lösungen, wobei manche besser und manche schlecher sind. Ich würde das jetzt spontan wie folgt lösen:

Code: Alles auswählen

with open('test.dat', 'r') as data:
    for line in data:
        if line.split('.')[0] in map(str,range(5,11)):
            print line,
Grüße
Gerrit
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wir hatten da neulich schon mal eine Frage, die sehr ähnlich gelagert war:
http://www.python-forum.de/topic-20745.html

Da findest Du etwas dazu :-)

(Wenn Du Python >= 2.5 verwendest fällt das finally natürlich weg, da Du das Öffnen dort mit with realisieren solltest)
Chibi
User
Beiträge: 22
Registriert: Samstag 7. November 2009, 12:10

Vielen Dank, das hat mich schon mal ein Stück weiter gebracht
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Dies finde ich einfacher:

Code: Alles auswählen

if 5 <= int(line.split(".", 1)) <= 10:
Stefan
Antworten