尝试将RGB转换为HEX时无效的文字问题

时间:2016-08-21 15:00:17

标签: python selenium type-conversion

在编写一些单元测试时,我不得不将RGB颜色转换为HEX。我的转换功能是

environment.mode

我使用单元测试函数(使用Python的Selenium)获得的输出格式为 def rgb_to_hex(rgb): return '#%02x%02x%02x' % rgb

rgba(255, 255, 255, 1) [没有rgba]中传递此内容会出现此错误:

rgb_to_hex()

我读了this链接,这让我觉得值之间的空格就是这个原因。但是,我无法解决这个问题。如何克服这个?

1 个答案:

答案 0 :(得分:0)

可能有很多原因: 1.在这种情况下,rgb应该是元组,有3个值。所以(255,255,255)以元组的形式需要在这里传递而不是(255,255,255,1) 2. rgb必须是一个元组,如果它是字符串,这将不起作用。

尝试在python解释器中使用以下命令

"#%02x%02x%02x" % (255, 255, 255)

它会给出预期的结果" #fffff"

如果我们运行以下

 "#%02x%02x%02x" % (255, 255, 255,1)

它会说不是在字符串格式化过程中转换的所有参数。

但是问题中显示的堆栈跟踪看起来像是在传递'(255,255,255,1)'作为单个字符串,显然无法解析为它。 因此,请确保您正在转换"(255,255,255,1)和#34;在将其传递给格式化程序之前将字符串转换为元组(255,255,255)。你可以使用string上的split函数来解析它,然后从splitted值创建一个元组。记得要从分割的字符串中剪掉括号。

e.g

def rgb_to_hex(rgb):     #例如,如果rgb ="(255,255,255,1)"

new_string = rgb[1:-4]  # remove starting brace and , 1) from last
# new_strings will be "255, 255, 255"

string_fractions = input_string.split(",")
# string fractions will be ['255', ' 255', ' 255']

# now notice it is list of strings and we need a tuple of ints
int_tuples = tuple(map(int, input_string.split(",")))
# int_tuples will be (255, 255, 255)

return '#%02x%02x%02x' % int_tuples