我有一个相当不雅的嵌套循环来清理csv中的数据 - 是否有更好/更pythonic的方式来完成下面?在嵌套循环中排除列表理解中的额外列表
data = [[map(int, i.split(',')) for i in (item.strip()
for item in line.rstrip('\n').split('\t'))][0]
for line in open('input1.csv')]
output: [[8, -11, 1], [7, 7, -1], [12, -20, 1], [14, -3, -1], [12, 8, -1], [1, -12, 1], [15, 5, -1], [7, -10, 1], [10, 4, -1], [6, 2, 1], [8, 12, -1], [2, 20, -1], [1, -12, 1], [9, 8, -1], [3, 3, 1], [5, 6, 1], [1, 11, 1]]
特别是,在第二个for循环我调用由过去的for循环创建的列表中的索引0(不知道这是正确的术语?)。最初我有下面的代码,但这是生成一个双重嵌套列表。我坚持在[0]平坦化双重嵌套,但这似乎是一个非常糟糕的解决方案。从下面的CSV
[[map(int, i.split(',')) for i in (item.strip()
for item in line.rstrip('\n').split('\t'))]
for line in open('input1.csv')]
output: [[[8, -11, 1]], [[7, 7, -1]], [[12, -20, 1]], [[14, -3, -1]], [[12, 8, -1]], [[1, -12, 1]], [[15, 5, -1]], [[7, -10, 1]], [[10, 4, -1]], [[6, 2, 1]], [[8, 12, -1]], [[2, 20, -1]], [[1, -12, 1]], [[9, 8, -1]], [[3, 3, 1]], [[5, 6, 1]], [[1, 11, 1]]]
输入数据:
8,-11,1
7,7,-1
12,-20,1
14,-3,-1
12,8,-1
1,-12,1
15,5,-1
7,-10,1
10,4,-1
6,2,1
8,12,-1
2,20,-1
1,-12,1
9,8,-1
3,3,1
5,6,1
1,11,1
用csv模块读取文件! – wim
你能提供一个来自input1.csv的数据样本吗? –
[这里](https://docs.python.org/2.7/library/csv.html)是让你开始的csv模块的文档。它看起来像你有像'1,2,3 \ t4,5,6 \ t \ n7,8,9'这样的数据,你是否考虑过用换行符替换所有的标签?这将有助于知道为什么数据格式化,因为它是 –