03-reader对象
16.1.1 reader对象
要用 csv
模块从CSV文件中读取数据,需要创建一个 reader
对象。 reader
对象让你迭代遍历CSV文件中的每一行。在交互式环境中输入以下代码,同时将example.csv放在当前工作目录中:
❶ >>> import csv
❷ >>> exampleFile = open('example.csv')
❸ >>> exampleReader = csv.reader(exampleFile)
❹ >>> exampleData = list(exampleReader)
❺ >>> exampleData
[['4/5/2015 13:34', 'Apples', '73'], ['4/5/2015 3:41', 'Cherries', '85'],
['4/6/2015 12:46', 'Pears', '14'], ['4/8/2015 8:59', 'Oranges', '52'],
['4/10/2015 2:07', 'Apples', '152'], ['4/10/2015 18:10', 'Bananas', '23'],
['4/10/2015 2:40', 'Strawberries', '98']]
csv
模块是Python自带的,因此不需要安装就可以导入它❶。
要用 csv
模块读取CSV文件,首先用 open()
函数打开它❷,就像打开任何其他文本文件一样。但是,不用在 open()
返回的 File
对象上调用 read()
或 readlines()
方法,而是将它传递给 csv.reader()
函数❸。这将返回一个 reader
对象供你使用。请注意,不能直接将文件名字符串传递给 csv.reader()
函数。
要访问 reader
对象中的值,最直接的方法就是将它转换成一个普通Python列表,即将它传递给 list()
❹。在这个 reader
对象上应用 list()
函数,将返回一个列表的列表。可以将它保存在变量 exampleData
中。在交互式环境中输入 exampleData
,将显示列表的列表❺。
既然已经将CSV文件表示为列表的列表,就可以用表达式 exampleData[row] [col]
来访问特定行和列的值。其中, row
是 exampleData
中一个列表的索引, col
是该列表中你想访问的项的索引。在交互式环境中输入以下代码:
>>> exampleData[0][0]
'4/5/2015 13:34'
>>> exampleData[0][1]
'Apples'
>>> exampleData[0][2]
'73'
>>> exampleData[1][1]
'Cherries'
>>> exampleData[6][1]
'Strawberries'
exampleData[0][0]
进入第一个列表,并给出第一个字符串; exampleData[0][2]
进入第一个列表,并给出第三个字符串;以此类推。