【问题标题】:Encountered with ValueError: invalid literal for int() with base 10: '' Error遇到 ValueError: int() 基数为 10 的无效文字: '' 错误
【发布时间】:2020-10-12 17:30:01
【问题描述】:

参考:How to sort/order tuple of ip address in python

使用:

sorted(a, key=lambda x: tuple(int(i) for i in x['host'].split('.'))[::-1]) 

逻辑 对元组进行排序,遇到

ValueError: int() 基数为 10 的无效文字:'' 错误,

请帮帮我

【问题讨论】:

  • 请调试,做一个for循环,拆分并转换为int
  • 看看x['host'] 包含什么。我怀疑你会发现它的组件不是有效数字(例如,在这种情况下,'' Error,")。
  • i 之一不是数字。
  • for x in a: try: print(tuple(int(i) for i in x['host'].split('.'))) except: print(">>", x)
  • 你能告诉我们a的值吗?问题就在那里。至少有一个值不是有效的 IPv4 地址。

标签: python python-3.x dictionary tuples


【解决方案1】:

有些字符不是数字或“。”在您的输入数据中(数组a)。

我们不知道您的输入数据,因此我无法直接指出错误,但似乎a 中的值之一可能包含字符串'' Error,

这对我来说很好用(不会出错):

a=[{'host': u'10.219.1.1'}, {'host': u'10.91.1.1'}, {'host': u'10.219.4.1'}, {'host': u'10.91.4.1'}]

print(sorted(a, key=lambda x: tuple(int(i) for i in x['host'].split('.'))[::-1]) )

它给出了这个输出:

[{'host': '10.91.1.1'}, {'host': '10.219.1.1'}, {'host': '10.91.4.1'}, {'host': '10.219.4.1'}]

您是否尝试运行该确切代码?

【讨论】:

  • a = [{'host': u'10.219.1.1'}, {'host': u'10.91.1.1'}, {'host': u'10.219.4.1'}, {'host': : '10.91.4.1'}] sorted(a, key=lambda x: tuple(int(i) for i in x['host'].split('.'))) # [{'主机':'10.91.1.1'},{'主机':'10.91.4.1'},{'主机':'10.219.1.1'},{'主机':'10.219.4.1'}]排序(a, key=lambda x: tuple(int(i) for i in x['host'].split('.'))[::-1]) # [{'host': '10.91.1.1'}, { 'host': '10.219.1.1'}, {'host': '10.91.4.1'}, {'host': '10.219.4.1'}] 仅供参考:stackoverflow.com/questions/64117764/…
  • @SujithKumar 是的,但问题是当我尝试它时它可以很好地处理特定数据。所以我假设你没有使用这些数据?
  • @SujithKumar 啊,您需要通过编辑问题来发布代码。它不能从评论中复制,因此我们可以对其进行测试,因为换行符是从 cmets 中删除的,它们在 Python 中很重要。
猜你喜欢
  • 2019-08-10
  • 2017-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-04
  • 2019-08-16
  • 2023-03-09
相关资源
最近更新 更多