使用 csv.reader 比用 python 编写自己的解析器有什么优势

use*_*190 2 python csv python-2.7

如果下面的两个代码片段给出相同的结果,那么请告诉我使用的优点是什么csv.reader

1)

import csv
f = open('a.csv', 'rb')
spamreader = csv.reader(f)
for a in spamreader:
    print a
Run Code Online (Sandbox Code Playgroud)
  1. f = open('a.csv', 'rb') for a in f: print a.split(',')

结果:

['SNO', ' Name', ' Dept']
['1', ' Def', ' Electronics']
['2', 'Abc', 'Computers']
Run Code Online (Sandbox Code Playgroud)

Mar*_*oma 6

csv在您的示例中,我没有看到使用module的优势。但是,当您引用元素时,情况就会发生变化:

SNO,Name,Dept
1,Def,Electronics
2,Abc,Computers
3,"here is the delimiter, in quotes",ghi
Run Code Online (Sandbox Code Playgroud)

有了 csv 模块,就很简单了

import csv
with open('a.csv', 'rb') as f:
    csv_reader = csv.reader(f, delimiter=',', quotechar='"')
    for row in csv_reader:
        print(row)
Run Code Online (Sandbox Code Playgroud)

但拆分会忽略引号。

(无论如何,我建议使用 pandas 来读取 CSV 文件,如下所示。请注意,您应该关闭已打开的文件。通过使用该with语句,您可以隐式执行此操作。)