Seite 2 von 2

Verfasst: Freitag 29. Mai 2009, 16:17
von quant
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 ?

Verfasst: Freitag 29. Mai 2009, 16:27
von Hyperion
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!

Verfasst: Freitag 29. Mai 2009, 16:39
von 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.

Verfasst: Freitag 29. Mai 2009, 16:41
von quant
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()

Verfasst: Freitag 29. Mai 2009, 19:08
von BlackJack
@quant: Schau Dir noch einmal meinen letzten Beitrag an.

Du hast da übrigens eine nette Endlosschleife gebastelt.

Verfasst: Freitag 29. Mai 2009, 22:07
von krisi12345
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