要使用csv模块从CSV文件读取数据,您需要创建一个Reader object。 Reader对象允许您迭代CSV文件中的行:
Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import csv
>>> exampleFile = open('example.csv')
>>> exampleReader = csv.reader(exampleFile)
>>> exampleData = list(exampleReader)
>>> exampleData
[['4/5/2014 13:34', 'Apples', '73'], ['4/5/2014 3:41', 'Cherries', '85'], ['4/6/2014 12:46', 'Pears', '14'], ['4/8/2014 8:59', 'Oranges', '52'], ['4/10/2014 2:07', 'Apples', '152'], ['4/10/2014 18:10', 'Bananas', '23'], ['4/10/2014 2:40', 'Strawberries', '98']]
>>> exampleData[0][0]
'4/5/2014 13:34'
>>> exampleData[0][1]
'Apples'
>>> exampleData[0][2]
'73'
>>> exampleData[1][2]
'85'
>>> exampleData[6][1]
'Strawberries'
循环读取 Reader Objects 当中的数据
对于大型CSV文件,您需要在for循环中使用Reader对象。 这个避免一次将整个文件加载到内存中。 例如,输入进入交互式shell:
Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import csv
>>> exampleFile = open('example.csv')
>>> exampleReader = csv.reader(exampleFile)
>>> for row in exampleReader:
... print('Row #' + str(exampleReader.line_num) + ' ' + str(row))
...
Row #1 ['4/5/2014 13:34', 'Apples', '73']
Row #2 ['4/5/2014 3:41', 'Cherries', '85']
Row #3 ['4/6/2014 12:46', 'Pears', '14']
Row #4 ['4/8/2014 8:59', 'Oranges', '52']
Row #5 ['4/10/2014 2:07', 'Apples', '152']
Row #6 ['4/10/2014 18:10', 'Bananas', '23']
Row #7 ['4/10/2014 2:40', 'Strawberries', '98']
Writer Objects
Writer objects 允许您将数据写入CSV文件。 要创建一个 Writer object,你使用 csv.writer() 函数。 在交互式shell中输入以下内容:
Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import csv
>>> outputFile = open('output.csv', 'w', newline='')
>>> outputWriter = csv.writer(outputFile)
>>> outputWriter.writerow(['spam', 'eggs', 'bacon', 'ham'])
21
>>> outputWriter.writerow(['Hello, world!', 'eggs', 'bacon', 'ham'])
32
>>> outputWriter.writerow([1, 2, 3.141592, 4])
16
>>> outputFile.close()
首先,调用 open() 并传递’w’以在写入模式下打开文件u。 这将创建对象,然后传递给csv.writer() 以创建Writer对象。在Windows上,您还需要为open()函数传递一个空字符串 的换行关键字参数。 由于技术原因超出范围如果你忘了设置newline参数,那么输出就是output.csv中的行将是双倍间距,如图14-1所示。

Writer对象的 writerow() 方法采用list参数。列表中的每个值都放在输出CSV文件中的单元格中。该
writerow() 的返回值是写入文件的字符数该行(包括换行符)。此代码生成一个如下所示的output.csv文件:
spam,eggs,bacon,ham
"Hello, world!",eggs,bacon,ham
1,2,3.141592,4
注意Writer对象如何自动转义中的逗号价值’你好,世界!’ 在CSV文件中使用双引号。 csv模块
使您免于必须自己处理这些特殊情况。
The delimiter and lineterminator Keyword Arguments
假设您要使用制表符而不是逗号来分隔单元格你希望行是双倍行距。 你可以输入类似的东西
进入交互式shell:
>>> import csv
>>> csvFile = open('example.tsv', 'w', newline='')
>>> csvWriter = csv.writer(csvFile, delimiter='\t', lineterminator='\n\n')
>>> csvWriter.writerow(['apples', 'oranges', 'grapes'])
23
>>> csvWriter.writerow(['eggs', 'bacon', 'ham'])
16
>>> csvWriter.writerow(['spam', 'spam', 'spam', 'spam', 'spam', 'spam'])
31
>>> csvFile.close()
>>> quit()
这会更改您的分隔符和行终止符文件。 分隔符是行上单元格之间出现的字符。 通过
默认情况下,CSV文件的分隔符是逗号。 行终止符是行尾的字符。 默认情况下,行终止符
是换行符。 您可以使用。将字符更改为不同的值与 csv.writer() 的 delimiter 和 lineterminator 关键字参数。
传递delimeter =’\t’和lineterminator =’\n\n’你改变了特征 - 单元格与制表符之间以及行与两个换行符之间的字符。然后我们调用 writerow() 三次给我们三行。这将生成一个名为 example.tsv 的文件,其中包含以下内容:

1354

被折叠的 条评论
为什么被折叠?



