我有一个字符串列表:
list1=['[206,397]', '[207,397]', '[208,397]', '[209,397]', '[210,397]', '[211,399]']
我想要这个输出:
list1=[[206,397], [207,397], [208,397], [209,397], [210,397], [211,399]]
我尝试了几种方法将字符串转换为列表,但我没有设法得到我想要的输出。
这是我做的:
for i in list1:
i=list(i)
没有对list1进行任何更改
我又尝试了另一种方法:
list1=['[206,397]', '[207,397]', '[208,397]', '[209,397]', '[210,397]', '[211,399]']
list2=[]
for i in list1:
list2.append(list(i))
这次输出是这样的:
[['[', '2', '0', '6', ',', '3', '9', '7', ']'], ['[', '2', '0', '7', ',', '3', '9', '7', ']'], ['[', '2', '0', '8', ',', '3', '9', '7', ']'], ['[', '2', '0', '9', ',', '3', '9', '7', ']'], ['[', '2', '1', '0', ',', '3', '9', '7', ']'], ['[', '2', '1', '1', ',', '3', '9', '9', ']']]
你能帮我解决这个问题吗?提前感谢您提供任何帮助
答案 0 :(得分:1)
JSON解析可能适用于评论中提到的,但这也适用于您提供的数据样本。我不确定您是希望结果是字符串列表列表还是整数列表列表。如果前者是您想要的,请忽略第二行。
list2 = [x[1:-1].split(',') for x in list1]
list3 = [[int(x) for x in y] for y in list2]
print(list3)
# [[206, 397], [207, 397], [208, 397], [209, 397], [210, 397], [211, 399]]
编辑添加:如果愿意,可以压缩为单行:
list4 = [[int(y) for y in x[1:-1].split(',')] for x in list1]
答案 1 :(得分:1)
您可以使用ast.literal_eval
因此,生成列表的代码是: -
import ast
list1=['[206,397]', '[207,397]', '[208,397]', '[209,397]', '[210,397]', '[211,399]']
list2=[]
for i in list1:
list2.append(ast.literal_eval(i))
注意:不要忘记import ast
答案 2 :(得分:1)
非常简单易懂的Python代码也是这个循序渐进的代码:
list1=['[206,397]', '[207,397]', '[208,397]', '[209,397]', '[210,397]', '[211,399]']
resultList = []
for entry in list1:
entry = entry.replace("[", "") # Trims [
entry = entry.replace("]", "") # Trims ]
number1 = int(entry.split(",")[0]) # Splits by comma and converts to integer
number2 = int(entry.split(",")[1]) # Splits by comma and converts to integer
resultList.append([number1, number2]) # Append to resultList
print(resultList)
这会产生最终结果:
[[206, 397], [207, 397], [208, 397], [209, 397], [210, 397], [211, 399]]