有效地解开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)
谢谢。这个答案将被采纳。我不能在另一个11分钟内完成 –
@YiShen是否意味着“接受”? :D:D *采用*虽然听起来更好。 SO应该在文档中改变它 –