Zahlen aus String auslesen

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
Krull
User
Beiträge: 2
Registriert: Donnerstag 8. November 2012, 16:41

Hallo zusammen,

ich habe aus einer Datei folgenden String ausgelesen und möchte daraus nun die einzelnen Zahlen in Variablen oder einen Array extrahieren:

Code: Alles auswählen

' 2             0.4           0.65          100 '
Mit einfachen replace- oder delimiter-Anweisungen bin ich bisher jedoch nicht weit gekommen, da die Anzahl der Leerzeichen unterschiedlich sein kann (abhängig von der Anzahl der Dezimalstellen). Was aber stets konstant ist, ist der Zeichenabstand der jeweils ersten Ziffer einer Zahl (in diesem Fall immer 13). Kennt jemand evtl. einen Ansatz oder eine Funktion, mit der man die Werte auslesen kann? Meine Versuche mit numpy.loadfromtxt sind immer gescheitert, da wie gesagt der Delimiter variieren kann.
Zuletzt geändert von Krull am Freitag 9. November 2012, 11:06, insgesamt 1-mal geändert.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@Krull
Schau mal hier...
Damit ist das kein Problem!

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Krull hat geschrieben:Mit einfachen replace- oder delimiter-Anweisungen bin ich bisher jedoch nicht weit gekommen, da die Anzahl der Leerzeichen unterschiedlich sein kann (abhängig von der Anzahl der Dezimalstellen).
split ist die Anzahl der Leerstellen egal.

Code: Alles auswählen

>>> print ' 2             0.4           0.65          100 '.split()
['2', '0.4', '0.65', '100']
Wenn du dann noch echte Float-Werte daraus machen willst, dann bietet sich map an.

Code: Alles auswählen

>>> print map(float, ' 2             0.4           0.65          100 '.split())
[2.0, 0.4, 0.65, 100.0]
Krull
User
Beiträge: 2
Registriert: Donnerstag 8. November 2012, 16:41

Ah, super. Damit funktioniert es. Danke euch beiden!
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

@Krull: Das wird auch mit `numpy.loadtxt` funktionieren, da hier der "default delimiter" ebenfalls jeder Whitespace ist:

Code: Alles auswählen

from StringIO import StringIO
s = StringIO(' 2             0.4           0.65          100 ')

print np.loadtxt(s)
# output: array([   2.  ,    0.4 ,    0.65,  100.  ])
Grüße
Gerrit
Antworten