拆分列表元素进一步

时间:2016-04-03 10:15:42

标签: python arrays list

我有许多具有不同列数的.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,>']

是否有一种简单的方法可以访问列表中的每个元素(即单个数字,以便我可以输出它们)?

2 个答案:

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

结果将是相同的。