"数值错误:无效文字为int()的基数10:'1\t20.1103\t17.00\n'"

2024-09-23 22:26:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在运行一个别人给我的脚本,但我不断收到以下错误:

line 144, in <module>
    ID=int(afields[0])
ValueError: invalid literal for int() with base 10: '1\t20.1103\t17.00\n'

错误来自此代码段:

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])

从.txt文件读取altlat的位置:

ifh0=open(infilepath + '\\' + 'lat_alt_hainan.txt', "r")
zy_header_line=ifh0.readline()
altlat=ifh0.readline()

纬度高度_海南.txt看起来像这样:

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

等等。。。你知道吗

所以第一列用INT调用,另外两列用FLOAT调用。这就是出现错误的地方。脚本的创建者告诉我将excel中的.txt文件格式化为数字格式,然后错误消失,但我已经完成了,错误仍然存在。然后我想这可能是因为.txt文件使用“.”作为十进制分隔符,而我的计算机使用“,”,但我改变了这一点,错误仍然出现。你知道用什么方法来准备一个.txt文件供Python读取吗?你知道吗

谢谢!你知道吗


Tags: and文件txt脚本id错误linefloat
2条回答

要解决您的问题,您需要按照this answer given中的说明,使用^{}拆分读取/导入的行。你知道吗

不过,我想展示另一种方法,因为您提到您的数据来自Excel。你知道吗

我建议使用Python的标准^{}模块从文件中读取数据:

#!/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作为以下结构(分号作为列分隔符,点作为小数分隔符):

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

似乎要按所有空格拆分,应该使用不带任何参数的-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])

相关问题 更多 >