当字符串已经是列表形式时,将字符串更改为列表

时间:2018-02-21 16:09:21

标签: python string list

我有一个字符串列表:

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

你能帮我解决这个问题吗?提前感谢您提供任何帮助

3 个答案:

答案 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

输出截图: - Output

答案 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]]