извлечь список в последовательности строк - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть последовательность строк, в которой есть список Python.Выглядит это так

"['How', 'Quebec', 'nationalists', 'see', 'province', 'nation', '1960s?']"

Как я могу получить строку, заключенную в [], как тип данных списка Python?

Ответы [ 4 ]

0 голосов
/ 20 ноября 2018

Вы также можете достичь желаемого результата, используя строковые операции и нарезку:

string = "['How', 'Quebec', 'nationalists', 'see', 'province', 'nation', '1960s?']"
wordList = list(map(lambda elem: elem.replace('\'','') ,string[1:-1].split(', ')))
print(wordList)

Вывод:

['How', 'Quebec', 'nationalists', 'see', 'province', 'nation', '1960s?']
0 голосов
/ 20 ноября 2018

Используйте регулярное выражение для извлечения списка:

re.findall("\'(.*?)\'",st)

#['How', 'Quebec', 'nationalists', 'see', 'province', 'nation', '1960s?']
0 голосов
/ 20 ноября 2018

Используйте функцию literal_eval из стандартной библиотеки:

>>> from ast import literal_eval
>>> literal_eval("['How', 'Quebec', 'nationalists', 'see', 'province', 'nation', '1960s?']")
['How', 'Quebec', 'nationalists', 'see', 'province', 'nation', '1960s?']

Это намного безопаснее, чем прямое использование eval ( источник ).

0 голосов
/ 20 ноября 2018

Используйте функцию Python eval для оценки строки и получения списка

>>> x = "['How', 'Quebec', 'nationalists', 'see', 'province', 'nation', '1960s?']"
>>> eval(x)
['How', 'Quebec', 'nationalists', 'see', 'province', 'nation', '1960s?']
>>> type(eval(x))
<class 'list'>

ПРИМЕЧАНИЕ:

eval isопасно, если вы открываете код для открытого мира, такого как веб-сайт или API.eval выполняется в глобальном пространстве имен и, следовательно, может быть опасным.

Пример: eval(os.listdir()) дает все файлы и папки в рабочем каталоге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...