Ich möchte eine als '[1,2,3,4]' definierte Zeichenfolge in eine Liste konvertieren.
>>> a = [1, 2, 3, 4]
>>> a = str(a)
>>> print(a)
[1, 2, 3, 4]
>>> print(type(a))
<class 'str'>
Obwohl es mit der Standardausgabe schwer zu verstehen ist, handelt es sich programmgesteuert um eine Zeichenfolge von '[1, 2, 3, 4]'.
Verwenden Sie Slices, um andere Bereiche als "[]" aufzulisten.
>>> b = list(map(int, a[1:-1].split(", ")))
>>> print(b)
[1, 2, 3, 4] # <class 'list'>
eval () ist eine Funktion, die den Code in der Zeichenfolge ausführt. Beispielsweise kann Folgendes ausgeführt werden.
>>> eval("print('hello')")
hello
Sie können sehen, dass die print-Anweisung in der Zeichenfolge ausgeführt wird. Wenn Sie eval () verwenden, wird es als Ausdruck und nicht als Zeichenfolge behandelt.
>>> a = [1, 2, 3, 4]
>>> a = str(a)
>>> print(a)
[1, 2, 3, 4] # <class 'str'>
>>> b = eval(a)
>>> print(b)
[1, 2, 3, 4] # <class 'list'>
Die obigen zwei Methoden sind zusammengefasst. Es wird vielleicht nicht sehr oft verwendet, aber es war eine gute Gelegenheit, den Unterschied zwischen str und repr zu lernen. Versuch es bitte!
Obwohl eval () in Methode 2 eingeführt wurde, wurde darauf hingewiesen, dass ein Sicherheitsproblem vorliegt. (Vielen Dank!) Es gibt kein Problem mit dieser Methode, aber es scheint, dass ast.literal_eval () empfohlen wird, da es beliebige Skripte ausführen kann, wenn Eingaben von außen akzeptiert werden.
Referenz: [Warum ist es gefährlich, die Auswertungsfunktion in Webformularen usw. zu verwenden? ](Https://ja.stackoverflow.com/questions/61989/eval%E9%96%A2%E6%95%B0%E3%82%92web%E3%83%95%E3%82%A9%E3% 83% BC% E3% 83% A0% E3% 81% AA% E3% 81% A9% E3% 81% A7% E4% BD% BF% E3% 81% 86% E3% 81% A8% E3% 81% AA% E3% 81% 9C% E5% 8D% B1% E9% 99% BA% E3% 81% AA% E3% 81% AE% E3% 81% 8B)
Recommended Posts