Je voudrais convertir une chaîne définie comme «[1,2,3,4]» en une liste.
>>> a = [1, 2, 3, 4]
>>> a = str(a)
>>> print(a)
[1, 2, 3, 4]
>>> print(type(a))
<class 'str'>
Bien que cela soit difficile à comprendre avec la sortie standard, il s'agit d'une chaîne de caractères «[1, 2, 3, 4]» par programmation.
Utilisez des tranches pour répertorier les plages autres que "[]".
>>> b = list(map(int, a[1:-1].split(", ")))
>>> print(b)
[1, 2, 3, 4] # <class 'list'>
eval () est une fonction qui exécute le code dans la chaîne de caractères. Par exemple, ce qui suit peut être exécuté.
>>> eval("print('hello')")
hello
Vous pouvez voir que l'instruction d'impression dans la chaîne est en cours d'exécution. Si vous utilisez eval (), il sera traité comme une expression et non comme une chaîne.
>>> 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'>
Les deux méthodes ci-dessus sont résumées. Il n'est peut-être pas utilisé très souvent, mais c'était une bonne occasion d'apprendre la différence entre str et repr. Essayez-le!
Bien qu'eval () ait été introduit dans la méthode 2, il a été signalé qu'il existe un problème de sécurité. (Merci!) Il n'y a pas de problème avec cette méthode, mais il semble que ast.literal_eval () soit recommandé car il peut exécuter des scripts arbitraires lors de l'acceptation d'une entrée de l'extérieur.
Référence: [Pourquoi est-il dangereux d'utiliser la fonction eval dans les formulaires Web, etc.? ](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