Seite 1 von 1

Zahlen aus String auslesen

Verfasst: Freitag 9. November 2012, 09:41
von Krull
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.

Re: Zahlen aus String auslesen

Verfasst: Freitag 9. November 2012, 10:07
von mutetella
@Krull
Schau mal hier...
Damit ist das kein Problem!

mutetella

Re: Zahlen aus String auslesen

Verfasst: Freitag 9. November 2012, 10:08
von /me
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]

Re: [gelöst] Zahlen aus String auslesen

Verfasst: Freitag 9. November 2012, 11:06
von Krull
Ah, super. Damit funktioniert es. Danke euch beiden!

Re: Zahlen aus String auslesen

Verfasst: Freitag 9. November 2012, 12:42
von gkuhl
@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