【问题标题】:How to fix invalid literal for int() with base 16: ''?如何使用基数 16 修复 int() 的无效文字:''?
【发布时间】:2021-09-17 15:20:20
【问题描述】:

我有一些十六进制字符串 (splited_colors),我想将它们转换成颜色。 splited_colors 是一个长度为 221228 的列表,其第一行类似于 splited_colors[1] = [['ab0232'],['0013aa'],['ac0102']]。另外,我还有另一个字符串,例如“000000”。某些行已转换,但其他行未转换。我检查了一下,所有的十六进制字符串都是一样的,我没有任何不寻常的十六进制字符串。这个错误指的是什么?

RGB_colors_1 = []
for j in range (len(splited_colors)):        
    RGB_1 = tuple(int(splited_colors[j][0][k:k+2], 16) for k in (0, 2, 4))
    RGB_colors_1.append (RGB_1)

【问题讨论】:

  • 请注明spllited_colors是什么;该问题是由您未能包含的该变量的值引起的。此外,它应该被“拆分”,但这不是错误的根源。
  • 所以您亲自检查了所有 211,228 个字符串以确保它们的格式都正确?看来你的程序告诉你不是这样。您是否尝试过捕获异常并打印出失败的行?
  • 您需要在遇到该错误时停下来并确定 splited_colors[j][0] 的确切含义。
  • Python 新手?您的代码不是 Pythonic,“splited_colors[1]”是第二行。在任何情况下:将splitted colour 和RGB_1 打印到一个文件中,并检查它何时失败。是否有可能您没有处理所有情况(例如,网络使用 3 个十六进制数字颜色也是“#18c”,这意味着 1188cc)。或者你可能有空数据,或者双引号(常见错误),你应该检查哪些数据失败。如果你没有找到原因,你可以在这里发布(带有失败的确切输入,以及你期望的输出(在这些数据上)。
  • @PaulCornelius 我打印了所有的行

标签: python hex rgb


【解决方案1】:

查看此链接,看看它是否对您的问题有帮助:ValueError: invalid literal for int() with base 16: ''。如果您有一个空字符串或字母表中 f 之后的任何字母,则可以调用此异常。

要找出导致问题的字符串,我会在您的循环中添加类似print(j, RGB_1) 的内容。这使您可以找到导致问题的十六进制索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-19
    • 2014-03-03
    • 2019-02-16
    • 2020-08-17
    • 2020-05-27
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多