csv,IndexError:列表索引超出范围

Posted

技术标签:

【中文标题】csv,IndexError:列表索引超出范围【英文标题】:csv, IndexError: list index out of range 【发布时间】:2019-08-04 11:43:07 【问题描述】:

我正在阅读Python Crash Course一书中的示例并做示例。现在我陷入了从 csv 文件中读取数据的困境。我正在尝试获取 max_temperatures 的值并阅读它,但是当我以与书中相同的方式执行此操作时,会显示错误:

IndexError:
high = int(row[1])
IndexError: list index out of range

代码:

import csv


filename = "sitka_weather_history_2014.csv"
with open(filename) as f:
    reader = csv.reader(f)
    header_row = next(reader)
    highs = []
    for row in reader:
        high = int(row[1])
        highs.append(high)

    print(highs)

【问题讨论】:

【参考方案1】:

由于输入 file 包含空行,因此您必须确保列表 (row) 不为空。如果它是空的 - 只需跳过它。

类似:

for row in reader:
    if row:
        high = int(row[1])
        highs.append(high)

【讨论】:

@Matheo 很高兴为您提供帮助。 而且我知道解决方案非常简单。文件中有空行......非常感谢!【参考方案2】:

high 是行中的第一个元素吗?如果是这样,请记住 Python 从 0 开始计数 - 所以应该是 high = int(row[0])

【讨论】:

不,high 是行中的第二个元素,第一个是数据。这就是为什么我不知道如何到达该行中的第二个元素。 这里我上传文件“sitka_weather_history_2014”ibb.co/x8tsyKz的图片 首先,请将此示例数据上传到问题中。问题应该足够完整,这样回答者就不必在 cmets 中要求澄清了。 其次,也许你的文件没有被正确解析?可能整行被读取为一个长对象(因此该行中没有第二个元素)。尝试打印row[0](这是一种有用的调试技术),看看你在第一个元素中得到了什么。

以上是关于csv,IndexError:列表索引超出范围的主要内容,如果未能解决你的问题,请参考以下文章

Python Google Geocoding API - IndexError:列表索引超出范围?

IndexError:列表索引超出范围 - python 错误

Python:IndexError:列表索引超出范围

IndexError:列表索引超出范围(打印整数)

IndexError:列表索引超出范围(对象检测)

IndexError:列表索引超出范围。无法理解问题出在哪里?