从csv文件导入数据 - 为什么他们打印不同的东西?

Yil*_*Liu 2 python csv python-3.x

请使用以下代码:

import csv
# import items with first row
inputfile = open('price.csv', 'r')
reader = csv.reader(inputfile)
rows1 = [row for row in reader] # here
# del first row
rows2 = rows1[1:]
print(rows2)
Run Code Online (Sandbox Code Playgroud)

更改

rows1 = [row for row in reader]
Run Code Online (Sandbox Code Playgroud)

rows1 = [row for row in inputfile]
Run Code Online (Sandbox Code Playgroud)

改变输出:

# with 'reader'
[['6004', '240'], ['6004', '350'], ['6004', '350']]

# with 'inputfile'
['6004,240\n', '6004,350\n', '6004,350\n']
Run Code Online (Sandbox Code Playgroud)

是什么造成的?或者说,原理是什么?

Dan*_*den 6

file对象是可迭代的.迭代file对象inputfile会将原始(未分析)行返回为字符串对象.

您构造了一个csv.reader可以解析这些行的对象.该csv.reader对象也是可迭代的,并且迭代它返回各个CSV记录的字符串列表.

因此,你遍历时得到不同的结果inputfile比过reader.