einlesen und verarbeiten von daten

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.
quant
User
Beiträge: 34
Registriert: Freitag 29. Mai 2009, 12:06

ahh ich seh schon wen ich es mit folgendem code mache

Code: Alles auswählen

fdata = open("apal26-qmda-4gev.f14","r")
while True:
	for line in fdata:
#	splittn = line.split()
		splittn = line.split(" ")
#	line.find("UQMD")
#	while True:
		
		if "UQMD" in splittn:
			print splittn[0]
		if ("projectile:") in splittn:
#			pass
			print splittn[4]
#			pro = (splittn[10], splittn[11])
#			print pro
#		else:
#			print "nicht drin"

#		pro = splittn.index("projectile:")+3
#		print pro
		
fdata.close()
würde ich zwar ein ergebis bekommen aber dieses also print splittn[4] wäre ein zahl genauer -1 und diese zeigt er mir nicht an, gibts da ne andere möglichkeit ?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

quant hat geschrieben: würde ich zwar ein ergebis bekommen aber dieses also print splittn[4] wäre ein zahl genauer -1 und diese zeigt er mir nicht an, gibts da ne andere möglichkeit ?
Hä? Sorry, das kann niemand verstehen!
BlackJack

@quant: Komm doch jetzt bitte nicht mit jedem Mist angekleckert, den Du ganz einfach selber ausprobieren kannst. Wenn ``splittn[4]`` nicht das enthält, was Du erwartest, dann lass Dir doch einfach mal ``splittn`` an der Stelle komplett ausgeben. Das sieht dann ungefähr so aus:

Code: Alles auswählen

In [500]: s = 'projectile:  (mass, char)  197  79   target:  (mass, char)  197  79'

In [501]: s.split(' ')
Out[501]:
['projectile:',
 '',
 '(mass,',
 'char)',
 '',
 '197',
 '',
 '79',
 '',
 '',
 'target:',
 '',
 '(mass,',
 'char)',
 '',
 '197',
 '',
 '79']

In [502]: s.split(' ')[4]
Out[502]: ''
Dann liest man mal in der Doku nach was das Argument bedeutet und was es bedeutet, wenn man *kein* Argument übergibt und kommt da drauf:

Code: Alles auswählen

In [503]: s.split()
Out[503]:
['projectile:',
 '(mass,',
 'char)',
 '197',
 '79',
 'target:',
 '(mass,',
 'char)',
 '197',
 '79']

In [504]: s.split()[4]
Out[504]: '79'
Dir wurde empfohlen das Tutorial durchzuarbeiten. Nicht nur lesen, sondern auch ausprobieren und variieren. Viele Fragen lassen sich der Python-Shell schneller selber beantworten, als wenn man die erst hier reinstellt.
quant
User
Beiträge: 34
Registriert: Freitag 29. Mai 2009, 12:06

hmm ok ich habs gelöst glaub ich ^^ es waren mehr lehrzeichen dazwischen und deswegen hat er anscheinend diese mit augenommen als leere argumente im listings kann man das irgendwie verändern also die leerstellen rausnehmen ?

Code: Alles auswählen

UQMD   version:       20030   1000  20030  output_file  14
projectile:  (ityp, char)   -1  -1   target:  (mass, char)   26  13 
es sieht also jetzt so aus :

Code: Alles auswählen

import string


	
fdata = open("apal26-qmda-4gev.f14","r")
while True:
	for line in fdata:
		splittn = line.split(" ")

		if "UQMD" in splittn:
			print splittn[0]
		if ("projectile:") in splittn:
#			pass
			print splittn[6]
		
fdata.close()
BlackJack

@quant: Schau Dir noch einmal meinen letzten Beitrag an.

Du hast da übrigens eine nette Endlosschleife gebastelt.
Benutzeravatar
krisi12345
User
Beiträge: 205
Registriert: Mittwoch 4. März 2009, 16:56
Wohnort: Das schöne München
Kontaktdaten:

Also Ich glaube beim momentanen Stand von diesem Thema bin Ich schon etwas zurück geblieben, aber:
Ich hab auch schon mal ein Programm geschrieben wo eine Datei gespeichert wird und dann auch wieder ausgelesen werden soll.
Dabei hab Ich versucht etwas bestimmten z.B. einer Zeile einen Namen zu geben.
Die Datei würde dann in etwa so aussehen:

9991-kris
9992-whg

Dabei entspricht dass 9991-9992 einem Wert in diesem Fall Vorname und Schule.
Beim Minus wird die Zeile in zwei Teile unterteilt wobei dann nur noch ein Teil gebraucht wird.
http://openbook.galileocomputing.de/pyt ... ac21d3a754
Antworten