我的一个程序的输出是一个二维数组,例如
[[1,2,3],[4,5,6,7],[8,9]]
不确定的长度。我将此输出作为单行写入文件geno_matrix,然后我需要读入另一个程序进行分析和处理。我需要将其作为另一个二维数组读入另一个程序。
显然,,
之后的分裂不会起作用,因为我最终会得到括号和个别数字的列表。如果我做
for line in geno_matrix:
vec = line.rstrip('\n').split(',')
这将分隔所有条目(和括号)。我也试过
vec = line.rstrip('\n').split(',[')
返回一个列表
['[[1,2,3],[4,5,6,7],[8,9]]']
这样vec[0]
就是字符串(不是数组)'[[1,2,3],[4,5,6,7],[8,9]]'
,这让我回到原来的分裂问题。使用Python阅读原始二维列表的最简单方法是什么?
答案 0 :(得分:2)
您可以使用ast
的{{1}}功能:
literal_eval
会给你
from ast import literal_eval
literal_eval('[[1,2,3], [4,5,6,7], [8,9]]')
作为数组。
答案 1 :(得分:0)
这样做会给你一个字符串列表,每个字符串代表一个向量:
"[[1,2,3],[4,5,6,7],[8,9]]".lstrip('[[').rstrip(']]').split(r'],[')
如此:
['1,2,3', '4,5,6,7', '8,9']
然后,您可以将单个字符串拆分为列表。