我正在运行由其他人提供给我的脚本,但我不断收到以下错误:
public Main() {
System.out.println("Inside Duplicate Main");
}
错误来自这部分代码:
line 144, in <module>
ID=int(afields[0])
ValueError: invalid literal for int() with base 10: '1\t20.1103\t17.00\n'
从.txt文件中读取altlat的地方:
while altlat and tminM and tmaxM:
afields=altlat.split(' ')
tmifields=tminM.split(' ')
tmxfields=tmaxM.split(' ')
ID=int(afields[0])
y= float(afields[1])
z=float(afields[2])
lat_alt_hainain.txt看起来像这样:
ifh0=open(infilepath + '\\' + 'lat_alt_hainan.txt', "r")
zy_header_line=ifh0.readline()
altlat=ifh0.readline()
等...
所以使用INT调用第一列,使用FLOAT调用另外两列。这是出现错误的地方。该脚本的创建者告诉我,将.txt文件格式化为excel格式,之后错误消失,但我已经完成了这个并且错误仍然存在。然后我认为这可能是因为.txt文件使用'。'作为小数分隔符,虽然我的计算机使用',',但我改变了,但错误仍然出现。你知道准备一个.txt文件以供Python读取的其他方法吗?
谢谢!
答案 0 :(得分:3)
看起来你想要按所有空格分割,你应该使用 - string.split()
而没有任何参数。
示例 -
while altlat and tminM and tmaxM:
afields=altlat.split()
tmifields=tminM.split(' ')
tmxfields=tmaxM.split(' ')
ID=int(afields[0])
y= float(afields[1])
z=float(afields[2])
答案 1 :(得分:0)
要解决您的问题,您需要按str.split()
中所述使用this answer given拆分读取/导入的行。
但是我想展示一种替代方法,因为您提到您的数据来自Excel。
我建议使用Python的标准csv
模块从文件中读取数据:
#!/usr/bin/env python
# coding: utf-8
import csv
with open('foo.csv') as csvfile:
line = csv.reader(csvfile, delimiter=';')
line.next() # skip header line
for row in line:
ID = int(row[0])
lat = float(row[1])
lon = float(row[2])
print('ID: {}, Lat: {}, Lon: {}'.format(ID, lat, lon))
而foo.csv
为以下结构(分号为列分隔符,Dot为十进制分隔符):
POINTID;lat;alt
1;20.1103;17.00
2;20.0269;1.00
3;20.0269;16.00
4;20.0269;17.00
5;20.0269;5.00
6;20.0269;5.00