Python CSV阅读器:没有获取线功能?

Luc*_*uca 0 python csv iterator generator

我一直在这里阅读CSV模块上的Python文档:https://docs.python.org/2/library/csv.html

我注意到它没有提到任何方式让读者对象返回它当前正在读取的行数,或者它当前处于哪个迭代.这似乎是一个广泛需要的功能.所以,我想知道如何做到这一点:

reader = csv.DictReader(readFile)
    for row in reader:
        # do something 
        # now want to find the line number that row corresponds to
Run Code Online (Sandbox Code Playgroud)

或者,如果不可能,为什么会这样.

Mos*_*oye 5

reader对象是一个迭代器,因此您始终可以使用它enumerate来获取行号:

reader = csv.DictReader(readFile)
for line_number, row in enumerate(reader):
     # some code
Run Code Online (Sandbox Code Playgroud)

enumerate 还允许您指定自定义起始索引:

for line_number, row in enumerate(reader, 2):
    # line number starts at 2
Run Code Online (Sandbox Code Playgroud)

enumerate不仅限于模块的reader对象,csv而且通常与iterables和迭代器一起工作.