Python操作csv

要使用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所示。
图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 的文件,其中包含以下内容:
tab

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值