Строка имеет все форматирование массива:Как преобразовать эту строку в массив?
myString="['ASK', 'NOT', 'WHAT', 'YOUR', 'COUNTRY', 'CAN', 'DO', 'FOR', 'YOU']"
Я хочу, чтобы сделать этот массив. Как мне это сделать в python?
Строка имеет все форматирование массива:Как преобразовать эту строку в массив?
myString="['ASK', 'NOT', 'WHAT', 'YOUR', 'COUNTRY', 'CAN', 'DO', 'FOR', 'YOU']"
Я хочу, чтобы сделать этот массив. Как мне это сделать в python?
Если это проект хобби, вы можете использовать eval()
, если вы хотите, чтобы убедиться, что это на самом деле массив:
string = ['ASK', 'NOT', 'WHAT', 'YOUR', 'COUNTRY', 'CAN', 'DO', 'FOR', 'YOU']
string = eval(string)
Если вы хотите что-то более безопасным, вы можете использовать literal_eval
, который не будет выполнять функции.
Вы можете использовать literal_eval
(который является более безопасным, чем eval
), или вы можете рассматривать его как строку JSON:
from ast import literal_eval
li = literal_eval("['ASK', 'NOT', 'WHAT', 'YOUR', 'COUNTRY', 'CAN', 'DO', 'FOR', 'YOU']")
# or with the json module
import json
li = json.loads("['ASK', 'NOT', 'WHAT', 'YOUR', 'COUNTRY', 'CAN', 'DO', 'FOR', 'YOU']")
Вы можете использовать функцию Eval(), даже если это немного опасно. ast.literal_eval, лучше, так как он не будет выполнять функции. – Kavli
@Kavli Ничего плохого в использовании 'eval' или' exec' *, если источник доверен *. Для небольших игрушечных проектов, где вы только один вводите ввод, можно с уверенностью предположить, что источнику доверяют. 'collection.namedtuple' использует' exec' для создания своих классов. Тем не менее, он устанавливает, что аргументы являются действительными идентификаторами, и поэтому 'exec' будет работать только так, как ожидалось. – Dunes