我有许多具有不同列数的.txt文件(但每个文件中的元素数量始终相同。
<1,1,1,1,1,>
<1,2,1,2,1,>
<2,3,2,3,2,>
<4,2,4,2,4,>
因为当我按
分割时,它会保存为.txt文件 lines = [line.rstrip('\n') for line in f]
我得到了
['<1,1,1,1,1,>', '<1,2,1,2,1,>', '<2,3,2,3,2,>', '<4,2,4,2,4,>']
是否有一种简单的方法可以访问列表中的每个元素(即单个数字,以便我可以输出它们)?
答案 0 :(得分:2)
您可以执行以下操作:
lines = [line.strip('<>,\n').split(',') for line in f]
它将返回包含数字作为字符串的列表列表:
[['1', '1', '1', '1', '1'],
['1', '2', '1', '2', '1'],
['2', '3', '2', '3', '2'],
['4', '2', '4', '2', '4']]
如果您希望数字为整数,则可以在分割一行后调用map
:
lines = [map(int, line.strip('<>,\n').split(',')) for line in f]
答案 1 :(得分:0)
来自ast import literal_eval
完成lines = [line.rstrip('\n') for line in f]
后,您可以执行此操作:
linelist = []
for line in lines:
linelist.append( literal_eval( line.replace( "<", "[" ).replace( ">", "]" ) ) )
这将创建一个列表列表。对于您提供的示例,您将获得类似于以下内容的内容:
[[1, 1, 1, 1, 1], [1, 2, 1, 2, 1], [2, 3, 2, 3, 2], [4, 2, 4, 2, 4]]
您可以将其用于进一步处理。
或者直接做:
lines = [ literal_eval( line.rstrip('\n').replace( "<", "[" ).replace( ">", "]" ) ) for line in f]
结果将是相同的。