繁体   English   中英

Python 3,如何将保存为字符串的二维列表转换为列表

[英]Python 3, how to convert a 2D list saved as a string into a list

我已将一些列表保存到 txt 文件中以备后用。 我想在列表中阅读它们。

第一行,因为它出现在 notepad++ 的 csv 文件中;

[[781, 828, 2], [844, 896, 2], [902, 950, 2], [957, 1010, 2], [1024, 1070, 2], [1085, 1133, 2], [ 1143, 1194, 2], [1203, 1251, 2], [1270, 1322, 2], [1330, 1380, 2], [1391, 1436, 2], [1457, 1516, 25], [ 1577, 2], [1601, 1665, 2], [1696, 1751, 2], [1760, 1817, 2], [1827, 1880, 2], [1892, 1943, 2], [1952, 2] 2], [2012, 2062, 2]]

with open('outputSelectorData/type_A.csv', newline='') as a:
readerA = csv.reader(a)

for i in range(count):
        A_list = next(readerA)
        print(A_list)

            
        #f = open("test.csv", "a+")
        #f.write(str(label) + '\n')
        #f.close()

打印 A_list 输出以下内容;

['[[781'、'828'、'2]'、'[844'、'896'、'2]'、'[902'、'950'、'2]'、'[957'、' 1010','2]','[1024','1070','2]','[1085','1133','2]','[1143','1194','2]', '[1203'、'1251'、'2]'、'[1270'、'1322'、'2]'、'[1330'、'1380'、'2]'、'[1391'、'1436' , '2]', '[1457', '1516', '2]', '[1525', '1577', '2]', '[1601', '1665', '2]', '[ 1696'、'1751'、'2]'、'[1760'、'1817'、'2]'、'[1827'、'1880'、'2]'、'[1892'、'1943'、' 2]'、'[1955'、'2002'、'2]'、'[2012'、'2062'、'2]]']

我已经尝试了一些方法来将其放入 2D list() 中,但认为在我开始拆分逗号和 [] 等之前,有人可能知道一种简单的方法。

谢谢

您可以在ast模块中使用literal_eval ,如下所示:

from ast import literal_eval

text = "[[781, 828, 2], [844, 896, 2], [902, 950, 2], [957, 1010, 2], [1024, 1070, 2], [1085, 1133, 2], [1143, 1194, 2], [1203, 1251, 2], [1270, 1322, 2], [1330, 1380, 2], [1391, 1436, 2], [1457, 1516, 2], [1525, 1577, 2], [1601, 1665, 2], [1696, 1751, 2], [1760, 1817, 2], [1827, 1880, 2], [1892, 1943, 2], [1955, 2002, 2], [2012, 2062, 2]]"

lists = (literal_eval(text))
for el in lists:
    print(el)

或者,使用json

import json

text = "[[781, 828, 2], [844, 896, 2], [902, 950, 2], [957, 1010, 2], [1024, 1070, 2], [1085, 1133, 2], [1143, 1194, 2], [1203, 1251, 2], [1270, 1322, 2], [1330, 1380, 2], [1391, 1436, 2], [1457, 1516, 2], [1525, 1577, 2], [1601, 1665, 2], [1696, 1751, 2], [1760, 1817, 2], [1827, 1880, 2], [1892, 1943, 2], [1955, 2002, 2], [2012, 2062, 2]]"

lists = json.loads(text)
for el in lists:
    print(el)

输出将完全相同:

[781, 828, 2]
[844, 896, 2]
[902, 950, 2]
[957, 1010, 2]
[1024, 1070, 2]
[1085, 1133, 2]
[1143, 1194, 2]
[1203, 1251, 2]
[1270, 1322, 2]
[1330, 1380, 2]
[1391, 1436, 2]
[1457, 1516, 2]
[1525, 1577, 2]
[1601, 1665, 2]
[1696, 1751, 2]
[1760, 1817, 2]
[1827, 1880, 2]
[1892, 1943, 2]
[1955, 2002, 2]
[2012, 2062, 2]

使用ast (抽象语法树)将字符串转换为列表

import ast
with open(r"file.txt") as file:
    for line in file:
        listt=ast.literal_eval(line)
print(listt)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM