【问题标题】:Python 3: ValueError: invalid literal for int() with base 10: 'd'Python 3:ValueError:int() 的无效文字,基数为 10:'d'
【发布时间】:2015-09-24 18:59:21
【问题描述】:

我有一个按行分隔的 txt。每行包含一个 IPv6 地址。我必须检查一行中是否有 18 个零,如果有,则必须将其写入文件。但是我的代码不起作用。

i = 0
j = 0
nullak = 0
with open('sok.txt', 'w') as kiiras:
    for sor in cimek:
        aktualis = list(cimek[i])
        for nullak in aktualis:
             if aktualis[j] == 0:
                 nullak += 1
             j += 1
        if int(nullak) >= 18:
            kiiras.write('{0}. {1}'.format(i+1, cimek[i]))
        i += 1
        nullak = 0
        j = 0

我在“if int(nullak) >= 18:”行中收到错误“ValueError: invalid literal for int() with base 10: 'd''。为什么?

【问题讨论】:

  • 表示nullak的值为d,不是数值。尝试打印 aktualis 以在迭代之前仔细检查其内容。
  • 但是 nullak 从一开始就为零,如果找到零,只需将 nullak 加一。所以我认为它不能包含“d”。
  • for nullak in aktualis 覆盖nullak
  • 谢谢,这就是我得到错误的原因,但它仍然没有在文件中写入任何内容。为什么?

标签: python


【解决方案1】:

尝试只使用字符串逻辑:

int(nullak) >= 18 

变成:

nullak.count('0') >= 18

【讨论】:

    猜你喜欢
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 2021-08-06
    相关资源
    最近更新 更多