Python 3.x 如何在Python中将分隔字符串转换回列表

Python 3.x 如何在Python中将分隔字符串转换回列表,python-3.x,string,list,Python 3.x,String,List,我有一个分隔字符串,如下所示 list1 = ['[107 207]', '[110 245]', '[115 282]', '[120 320]'] 如何将其转换回Python中的列表?转换后的列表应如下所示: [[107 207] [110 245] [115 282] [120 320]] 我尝试了list1=list1.split(“,”)。但是,当我打印列表[0]时,我得到了这个 ['[107 207]' [107 207] 而不是得到这个 ['[107 207]' [107

我有一个分隔字符串,如下所示

list1 = ['[107 207]', '[110 245]', '[115 282]', '[120 320]']
如何将其转换回Python中的列表?转换后的列表应如下所示:

[[107 207]
[110 245]
[115 282]
[120 320]]
我尝试了list1=list1.split(“,”)。但是,当我打印列表[0]时,我得到了这个

['[107 207]'
[107 207]
而不是得到这个

['[107 207]'
[107 207]
另外,尝试list1=[int(e)代表list1.split(',')]时,出现如下错误:

"invalid literal for int() with base 10: \"['[107 207]'\""

一个选项,使用嵌套列表理解和
re.findall
提取所有数字:

list1=['[107 207]',[110 245]',[115 282]',[120 320]]
输出=[[int(y)表示列表1中的x在re.findall(r'\d+',x)中的y]
打印(输出)
这张照片是:

[[107, 207], [110, 245], [115, 282], [120, 320]]

可能有一种方法可以在不调用regex的情况下实现这一点,但对我来说,
int()
cast似乎是必需的,因为输入数字是从字符串中开始的。

您可以去掉每个元素末端的括号。这个方法可能更简洁,但它是在纯Python中完成的,没有导入或正则表达式

input=['[107 207]、'[110 245]、'[115 282]、'[120 320]]
输出=[[i.lstrip(“[”).rstrip(“])中的ii的int(ii)值。输入中的i的split(“”)值]
这将返回您想要的内容:

[[107207]、[110245]、[115282]、[120320]]
下面是一种人类可读的代码形式,有助于可视化正在发生的事情:

output=[]
对于输入中的项目:
itemString=item.lstrip(“[”)
itemString=itemString.rstrip(“]”)
itemList=itemString.split(“”)
ItemNumber=[项目列表中ii的int(ii)]
output.append(ItemNumber)

This for me适用于我在这里提到的小集合,但在更大的列表中提供类似[]、[]、[]、[]、[1]、[0]、[7]、[2]、[0]、[7]……]的输出。我不知道为什么!将真实数据添加到您的问题中。给我一个错误“invalid literal for int(),基数为10:”@anjali两个有效答案都失败向我表明您的数据是问题所在,可能您有一些非数值。@anjali我同意Tim;这两种方法都适用于您提供给我们的数据集;如果您使用的数据集格式稍有不同,则应编辑您的问题以反映出来。@Tim似乎您是对的。我复制了整个字符串,并在Python3命令行中进行了尝试,效果很好。是的,它们是!。非常感谢你。