将CSV文件表示为列表的列表
>>> import csv >>> exampleFile = open('example.csv') Traceback (most recent call last): File "<stdin>", line 1, in <module> FileNotFoundError: [Errno 2] No such file or directory: 'example.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[row][col] 来访问特定行和列的值。
>>> exampleData[0][0] '4/5/2014 13:34' >>> >>> exampleData[0][1] 'Apples' >>> exampleData[0][2] '73' >>> exampleData[1][1] 'Cherries' >>> exampleData[1][0] '4/5/2014 3:41' >>> exampleData[6][1] 'Strawberries' >>>
对于大型的CSV文件,需要在一个for循环中使用Reader对象。避免将整个文件一次性装入内存。
>>> 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']
在导入csv模块,从CSV文件得到Reader对象之后,可以循环遍历Reader 对象中的行。每一行时一个值的列表,每个值表示一个单元格。
print()函数将打印出当前行的编号以及该行的内容,要取出行号,需要使用Reader对象的line_num变量。它包含当前行的编号。Reader 对象只能循环遍历一次,要再次读取CSV文件,必须调用csv.reader,创建一个对象。
>>> 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() >>>
JSON和API
json模块
取得当前的天气数据