从互联网上的文件中的字符串转换为int

时间:2014-11-30 02:58:26

标签: python string

我的程序应该从互联网上下载一个文件,然后根据某些因素(如年龄,工作等)来猜测一个人的工资。在我看来,它不是让我把字符串变成一个int我需要做的。因为我还是python的新手,所以任何帮助都会受到赞赏。主要错误发生在这里:

below_count = 0

for row in myfile:

    if ages_midpoint > int(row[0]):
        count_below50+=1

错误是:

ValueError: invalid literal for int() with base 10: ''

3 个答案:

答案 0 :(得分:2)

错误消息告诉您确切的错误。

  1. 如果您使用for .. in循环文本文件,则表示值row是一个字符串(文件中的一行)。
  2. 您正在查看row[0]这是字符串的第一个字符。
  3. 该字符是一个空格(我假设,因为在空字符串上调用[0]会抛出异常),这不是十进制数的合法表示。
  4. 你需要回到你真正想要做的事情并重新思考如何去做,因为这不是。

答案 1 :(得分:0)

row [0]的值是一个空字符串。您可以通过在命令行解释器上执行以下操作来重新创建错误...

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

您可能想要验证存储在行中的值。 if row:会做到这一点。

遗憾的是,您的帖子中没有足够的信息可以为您提供更多帮助。代码行if ages_midpoint > int(row[0]):非常可疑。行是文本文件中的一行文本,如果是这样,row [0]将返回第一个字符...可能不是你想要的。使用字符串拆分函数word = row.split(<charToSplitOn>)[0]

答案 2 :(得分:0)

这可能会有所帮助。

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

因此,您可以删除任何空格并放置try..catch

below_count = 0

    for row in myfile:
        try:
            if ages_midpoint > int(row.strip()[0]):
                count_below50+=1
        except ValueError:
            # row[0] is not an integer character
            # do something here
            pass