提取字符串序列中的列表

时间:2018-11-20 11:44:17

标签: python list

我有一个字符串序列,其中有一个python列表。看起来像这样

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

如何获取[]括起来的字符串作为python的列表数据类型?

4 个答案:

答案 0 :(得分:2)

使用正则表达式提取列表:

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

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

答案 1 :(得分:2)

使用标准库中的literal_eval函数:

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

比直接使用evalsource)安全得多。

答案 2 :(得分:1)

使用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是危险的,以防您将代码暴露给网站或api等开放世界。 eval在全局名称空间中执行,因此可能很危险。

示例: eval(os.listdir())给出工作目录中的所有文件和文件夹。

答案 3 :(得分:0)

您还可以使用字符串操作和切片来获得所需的结果:

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?']