如果以下两个代码段提供相同的结果,请告诉我使用csv.reader的优势
1)
ch2= SelectKBest(score_func=chi2, k='all').fit_transform(X, Y)
print(ch2.scores_)
2)
import csv
f = open('a.csv', 'rb')
spamreader = csv.reader(f)
for a in spamreader:
print a
结果:
f = open('a.csv', 'rb')
for a in f:
print a.split(',')
答案 0 :(得分:3)
在您的示例中,我看不到使用csv
module的优势。但是,当您引用元素时,情况会发生变化:
SNO,Name,Dept
1,Def,Electronics
2,Abc,Computers
3,"here is the delimiter, in quotes",ghi
使用csv模块,它只是
import csv
with open('a.csv', 'rb') as f:
csv_reader = csv.reader(f, delimiter=',', quotechar='"')
for row in csv_reader:
print(row)
但拆分会忽略引号。
(无论如何,我建议使用here所示的pandas来读取CSV文件。请注意,您应该关闭已打开的文件。使用with
语句,您可以做到隐含。)
答案 1 :(得分:3)
我澄清了您的问题,因为csv.reader()
是迭代器。您的问题将csv
模块与编写自己的解析器进行比较。
优点是csv
模块实际上实现了CSV格式(包括引号,转义和嵌入换行等),而你编写的天真解析器却没有。因此使用csv
模块更正确,实际上也更简单!