有效地解开CSV列到单独列出

问题描述:

我优化我的剧本,发现这个问题:有效地解开CSV列到单独列出

在这里,我有一个CSV文件,其中第一列就是索引,第二列包含字符串(任意长度的句子) 。我想创建两个变量“索引”和“字符串”分别包含所有的索引和字符串。这是我的代码:

with open(file_name, 'r', encoding="utf8") as csvfile: 
    train_set_x = csv.reader(csvfile, delimiter=',', quotechar='|') 
    index = [[c[0],c[1]] for c in train_set_x] 
    text = [a[1] for a in index] 

这样做的工作,但它需要2次迭代。我在问是否有更干净的方法来做到这一点? 谢谢

确实有。使用zip进行迭代解包。

index, text = zip(*((c[0], c[1]) for c in train_set_x)) 

MCVE:

In [152]: x, y = zip(*[(1, 2), (3, 4), (5, 6)]) 

In [153]: x 
Out[153]: (1, 3, 5) 

In [154]: y 
Out[154]: (2, 4, 6) 
+1

谢谢。这个答案将被采纳。我不能在另一个11分钟内完成 –

+0

@YiShen是否意味着“接受”? :D:D *采用*虽然听起来更好。 SO应该在文档中改变它 –