如何多次使用csv阅读器对象

bob*_*rti 2 python csv reader

我正在做一个 python 项目。我打开了一个新的 csv 文件,它的内容是

 A     |  B
  -------------
  1.  200 | 201   
  2.  200 | 202
  3.  200 | 201
  4.  200 | 203
  5.  201 | 201
  6.  201 | 202
  ...........
Run Code Online (Sandbox Code Playgroud)

而我正在做的是...

def csvvalidation(readers):
    for row in readers:
        print row
def checkduplicationcsv(reader):
    datalist = []
    for row in reader:
        print row
        content = list(row[i] for i in range(0,3))
        datalist.append(content)     
with open("new.csv", "rb") as infile:
    reader = csv.reader(infile)
    first_row = next(reader, None)  # skip the headers
    checkduplicationcsv(reader)
    csvvalidation(reader)
Run Code Online (Sandbox Code Playgroud)

问题是我只能打印一次值。csvvalidation()功能阅读器不起作用。如何多次使用阅读器对象。我无法打印其行值。我该怎么办?请给我一个解决方案。还有我不知道seek()(我认为它再次指向同一个读者)。所以我infile.seek(0)在第一个函数后尝试但没有用。什么也没发生

提前致谢。

ale*_*xis 6

读取器被一个文件指针包裹着,当它用完时,它就用完了。不要多次使用它,使用它一次然后处理你读取的数据数组:

with open("new.csv", "rb") as infile:
    reader = csv.reader(infile)
    first_row = next(reader, None)  # skip the headers
    data = list(reader)             # read everything else into a list of rows

checkduplicationcsv(data)
csvvalidation(data)
Run Code Online (Sandbox Code Playgroud)

是的,您的两个函数无需修改即可工作(除非它们已经损坏),因为列表、文件和 csv 阅读器都是可以迭代的“可迭代对象”。Python 是不是很伟大...