2017-10-27 4 views
1

Ich möchte eine "Liste" Zeichenfolge in eine Liste mit zwei Float-Elemente konvertieren. Leider wird die Liste als eine lange Zeichenfolge importiert. Original:Konvertieren einer Zeichenfolge in mehrere Floats

a = '[123.34 , -12333]' 

Dies ist eine große lange Zeichenfolge in dem mit der Karte zu schweben Umwandlung (float, a) zurückgibt: ValueError: could not convert string to float: [

Neu:

a = [123.34, -12333] 

Wo 123,34 und -12333 sind jedes einzelne float Zahlen

Ich habe versucht eval(a). Dies hat etwas funktioniert, aber alle negativen Zahlen würden positiv werden.

Jede Hilfe wäre willkommen. Vielen Dank.

+0

nicht ganz klar, was Sie brauchen. Bitte versuche es neu zu formulieren. –

+1

* mache alle negativen Zahlen zu positiv *: Ich kann das nicht reproduzieren, eval (a) muss funktionieren. –

Antwort

3

Sie müssen die Zeichenfolge konvertieren zuerst zur Liste

a = '[123.34 , -12333]' 
res = map(float, a[1:-1].split(',')) 
2

Neben dem bestehenden Antwort, da Sie eine Python-Liste in Form von String haben, können Sie auch verwenden, ast.literal_eval:

import ast 
f1, f2 = ast.literal_eval(a) 

OUTPUT

>>> f1, f2 = ast.literal_eval(a) 
>>> f1 
123.34 
>>> f2 
-12333 

literal_eval wird verwendet, um einen Ausdruck oder ein Unicode oder eine Python literal Latin-1 codierte Zeichenfolge sicher auszuwerten enthält.

0

Liste Mit Comprehensions

a = '[123.34 , -12333]' 
string_list = a[1:-1].split(',') 
res = [float(entry) for entry in string_list] 
Verwandte Themen