2016-05-10 2 views
0

Строка имеет все форматирование массива:Как преобразовать эту строку в массив?

myString="['ASK', 'NOT', 'WHAT', 'YOUR', 'COUNTRY', 'CAN', 'DO', 'FOR', 'YOU']" 

Я хочу, чтобы сделать этот массив. Как мне это сделать в python?

+1

Вы можете использовать функцию Eval(), даже если это немного опасно. ast.literal_eval, лучше, так как он не будет выполнять функции. – Kavli

+1

@Kavli Ничего плохого в использовании 'eval' или' exec' *, если источник доверен *. Для небольших игрушечных проектов, где вы только один вводите ввод, можно с уверенностью предположить, что источнику доверяют. 'collection.namedtuple' использует' exec' для создания своих классов. Тем не менее, он устанавливает, что аргументы являются действительными идентификаторами, и поэтому 'exec' будет работать только так, как ожидалось. – Dunes

ответ

0

Если это проект хобби, вы можете использовать eval(), если вы хотите, чтобы убедиться, что это на самом деле массив:

string = ['ASK', 'NOT', 'WHAT', 'YOUR', 'COUNTRY', 'CAN', 'DO', 'FOR', 'YOU'] 
string = eval(string) 

Если вы хотите что-то более безопасным, вы можете использовать literal_eval, который не будет выполнять функции.

0

Вы можете использовать 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']") 
Смежные вопросы