【发布时间】:2018-08-30 04:53:51
【问题描述】:
我正在尝试将 csv 设置为 [name |纬度 | long] 到一个新的 csv 设置为 [name |东方|北上|专区 | --],但它不断出现错误;
Traceback(最近一次调用最后一次):文件“E:\ACES Mapping Project\Data\Latlong_data\utm_request.py",第 25 行,在 company = eachline[0] IndexError: list index out of range
我是 Python 新手,但在使用非常相似的代码将原始地址和邮政编码数据库转换为 lat 和 long 时没有问题,所以我不确定我做错了什么?任何帮助都会非常感谢您,如果这真的很明显,我很抱歉。我的代码如下。
import csv
import utm
# Here enter the lat and long column numbers;
lat_col = 1
long_col = 2
# Here enter the name of the csv file for reading (r) and writing (w)
reading = 'Eng_latlong_data.csv'
writing = 'eng_utm.csv'
rawdata = open(str(reading),'r')
csv1 = csv.reader(rawdata,delimiter='|')
newdata = open(str(writing),'w')
csv2 = csv.writer(newdata,delimiter='|')
# below code will read through each line in lat long file
# then convert to utm
# and finally write as a new line with 'company name', (easting, northing, zone number, zone letter)
for eachline in csv1:
company = eachline[0]
print(company)
try:
u = utm.from_latlon(float(eachline[1]), float(eachline[2]))
csv.writerow([company, u[0], u[1], u[2], u[3]])
except:
print(' ...error')
rawdata.close()
newdata.close()
【问题讨论】:
-
您的 CSV 文件中有空行吗?也许您可以在
company =分配之前添加print(eachline),以便更好地了解问题所在。 -
是的,你是对的空行,我通过包含 if else 语句来修复它,谢谢你的帮助