我有一个字符串序列,其中有一个python列表。看起来像这样
"['How', 'Quebec', 'nationalists', 'see', 'province', 'nation', '1960s?']"
如何获取[]括起来的字符串作为python的列表数据类型?
答案 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?']
比直接使用eval
(source)安全得多。
答案 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?']