小编Kei*_*van的帖子

如何读取大型csv文件的特定行

我试图读取一个大型csv文件的一些特定行,我不想将整个文件加载到内存中.特定行的索引在列表中给出L = [2, 5, 15, 98, ...],我的csv文件如下所示:

Col 1, Col 2, Col3
row11, row12, row13
row21, row22, row23
row31, row32, row33
...
Run Code Online (Sandbox Code Playgroud)

使用这里提到的想法,我使用以下命令来读取行

with open('~/file.csv') as f:
    r = csv.DictReader(f) # I need to read it as a dictionary for my purpose

    for i in L:
        for row in enumerate(r):
            print row[i]
Run Code Online (Sandbox Code Playgroud)

我立即得到以下错误:

IndexError                                Traceback (most recent call last)
<ipython-input-25-78951a0d4937> in <module>()
      6     for i in L:
      7         for row in enumerate(r):
----> 8 …
Run Code Online (Sandbox Code Playgroud)

python csv large-files

8
推荐指数
1
解决办法
2万
查看次数

我仍然在范围内得到IndexError

我试图读取csv文件的行.我的文件看起来像这样

Col 1, Col 2, Col3
row11, row12, row13
row21, row22, row23
row31, row32, row33
...
Run Code Online (Sandbox Code Playgroud)

我使用以下命令来读取行

with open('~/data.csv') as f:
    r = csv.DictReader(f)
    for i in range(5):
        print(list(r)[i])
Run Code Online (Sandbox Code Playgroud)

输出打印第一行,但之后它立即给出索引错误.

IndexError                                Traceback (most recent call last)
<ipython-input-15-efcc4f8c760d> in <module>()
      2     r = csv.DictReader(f)
      3     for i in range(5):
----> 4         print(list(r)[i])

IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)

我猜我在某个地方犯了一个愚蠢的错误,但无法发现它.关于我做错了什么以及如何解决它的任何想法?

编辑:这是输出print(list(r)):

[{'Col 1': 'row11', ' Col3': ' row13', ' Col 2': ' row12'}, {'Col 1': 'row21', ' Col3': ' …
Run Code Online (Sandbox Code Playgroud)

python csv indexoutofboundsexception

3
推荐指数
1
解决办法
195
查看次数