[英]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.