【问题标题】:Python error - IndexError: list index out of rangePython 错误 - IndexError:列表索引超出范围
【发布时间】:2016-10-02 01:41:50
【问题描述】:

我正在学习 python,所以这听起来很简单,我正在尝试运行下面的代码,但我不断收到显示的错误消息,有什么想法可能导致它吗?

from geopy import geocoders
import csv

g_api_key = 'my_google_api_key'
g = geocoders.GoogleV3(g_api_key)

costco = csv.reader (open('costcolimited.csv'), delimiter = ',')

# Print header
print "Address, City, State, Zip Code, Latitude, Longitude"
for row in costco:
   full_addy = row[1]+ "," + row[2]+ "," + row[3] + "," + row[4]
   place, (lat,lng) = list (g.geocode(full_addy, exactly_one=FALSE))[0]
   full_addy + "," + str(lat) + "," + str(lng)

我遇到的错误

Traceback (most recent call last):
File "C:\Python27\geocodelocations.py", line 12, in <module>
full_addy = row[1]+ "," + row[2]+ "," + row[3] + "," + row[4]
IndexError: list index out of range

【问题讨论】:

  • 请记住row 中的第一个元素是row[0],而不是row[1]

标签: python python-2.7


【解决方案1】:

该错误是由于引用超出列表范围的元素引起的。从您的代码中,可能是因为您从1 开始计算元素。请记住,在 python 列表中,索引从0 开始。如果这是您的情况,则将索引移入

full_addy = row[1]+ "," + row[2]+ "," + row[3] + "," + row[4]

full_addy = row[0]+ "," + row[1]+ "," + row[2] + "," + row[3]

否则,请检查您的数据结构并确保它与您的代码匹配。

谢谢

【讨论】:

    【解决方案2】:

    首先确保您的 CSV 文件有四列。尝试检查len(row) &gt;= 4。如果它包含,您可以继续编写代码,但 Python 列表中的第一项由 0 索引引用。

    试试这样的:

    for row in costco:
       if len(row) < 4:
              print "Invalid file!"
              break
       full_addy = row[0]+ "," + row[1]+ "," + row[2] + "," + row[3]
       place, (lat,lng) = list (g.geocode(full_addy, exactly_one=FALSE))[0]
       full_addy + "," + str(lat) + "," + str(lng)
    

    【讨论】:

      猜你喜欢
      • 2018-04-22
      • 2020-09-04
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2015-01-28
      • 2019-01-06
      相关资源
      最近更新 更多