为了账号安全,请及时绑定邮箱和手机立即绑定

ValueError:带基数10:‘的int()文本无效

ValueError:带基数10:‘的int()文本无效

千万里不及你 2019-07-10 10:51:27
ValueError:带基数10:‘的int()文本无效我正在创建一个读取文件的程序,如果文件的第一行不是空白,它将读取接下来的四行。在这些行上执行计算,然后读取下一行。如果该行不是空的,它将继续。但是,我得到了这个错误:ValueError: invalid literal for int() with base 10: ''.它正在读取第一行,但不能将其转换为整数。我能做些什么来解决这个问题?守则:file_to_read = raw_input("Enter file name of tests (empty string to end program):")try:     infile = open(file_to_read, 'r')     while file_to_read != " ":         file_to_write = raw_input("Enter output file name (.csv will be appended to it):")         file_to_write = file_to_write + ".csv"         outfile = open(file_to_write, "w")         readings = (infile.readline())         print readings        while readings != 0:             global count             readings = int(readings)             minimum = (infile.readline())             maximum = (infile.readline())
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

为了记录在案:

>>> int('55063.000000')Traceback (most recent call last):
  File "<stdin>", line 1, in <module>ValueError: invalid literal for int() with base 10: '55063.000000'

把我带到这里.。

>>> float('55063.000000')
55063.0

必须被利用!


查看完整回答
反对 回复 2019-07-10
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

迭代文件并转换为int的Pythonic方法:

for line in open(fname):
   if line.strip():           # line contains eol character(s)
       n = int(line)          # assuming single integer on each line

你想要做的事情稍微复杂一些,但仍然不是直截了当的:

h = open(fname)for line in h:
    if line.strip():
        [int(next(h).strip()) for _ in range(4)]     # list of integers

这样,它在当时处理5行。使用h.next()而不是next(h)在Python2.6之前。

你的原因ValueError是因为int无法将空字符串转换为整数。在这种情况下,您需要在转换之前检查字符串的内容,或者除了一个错误:

try:
   int('')except ValueError:
   pass      # or whatever


查看完整回答
反对 回复 2019-07-10
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

以下内容在python中是完全可以接受的:

  • 将整数的字符串表示形式传递给

    int

  • 将浮点数的字符串表示形式传递到

    float

  • 将整数的字符串表示形式传递给

    float

  • 通过浮子进入

    int

  • 将整数传递给

    float

但你得到了一个ValueError如果传递一个字符串表示形式,则浮子int,或任何整数(包括空字符串)的字符串表示形式。如果您确实希望将浮点数的字符串表示形式传递给int,正如@katyhuff所指出的,您可以先转换为浮点数,然后再转换为整数:

>>> int('5')5>>> float('5.0')5.0>>> float('5')5.0>>> int(5.0)5>>> float(5)5.0>>> int('5.0')Traceback (most recent call last):
  File "<stdin>", line 1, in <module>ValueError: invalid literal for int() with base 10: '5.0'>>> int(float('5.0'))
  5


查看完整回答
反对 回复 2019-07-10
  • 3 回答
  • 0 关注
  • 1855 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信