将字符串传递为RGB颜色格式

时间:2019-05-27 12:15:16

标签: python string

我有一个这样的字典:

colour_dict={'Red': '0xFF, 0x00, 0x00','Green':'0x00, 0xFF, 0x00','White':'0xFF, 0xFF, 0xFF','Yellow':'0xff, 0xff, 0x00'}

我需要将此字典的值传递给此代码,然后它才能正常工作:

from pptx.dml.color import RGBColor
RGBColor(0xFF, 0x00, 0x00) 

当我执行以下操作以达到相同目的时:

RGBColor(colour_dict["Red"])

这是一个字符串,并且只想使用正数格式,因此抛出错误。

我已经尝试将此字符串转换为int格式,但是没有任何作用。

总体问题

如何使用dict将值传递给RGBColor?

4 个答案:

答案 0 :(得分:2)

colour_dict["Red"]字符串 "0xFF, 0x00, 0x00",当然不能直接将其转换为int

您需要转换字符串中的每一段并将这些值传递给RGBColor构造函数:

color = RGBColor(*map(lambda v : int(v, 16), colour_dict["Red"].split(',')))

注意:该行有很多事情,所以我将其分解并解释:

  • colour_dict["Red"].split(',')提取颜色值子字符串:['0xFF', '0x00', '0x00']

  • map()将作为第一个参数传递的函数应用于作为第二个参数传递的iterable中的每个值。

  • lambda v : int(v, 16)v从十六进制字符串转换为int

  • *之前的
  • map表示“解开后面的可迭代值”。这是一种传递带有RGB值的列表而不是调用RGBColor(R_val, G_val, B_val)的便捷方法。

答案 1 :(得分:0)

替换

RGBColor(colour_dict["Red"])

作者

eval("RGBColor({})".format(colour_dict["Red"]))

答案 2 :(得分:0)

我发现map lambda answer有点矫kill过正,这是一个不太理想的变体:

color = RGBColor(*[int(x,16) for x in colour_dict["Red"].split(",")])

答案 3 :(得分:0)

colour_dict [“ Red”]是一个字符串,而不是三个数字

您可以这样做:

a = list(colour_dict["Red"])
RGBColor(int(a[0]), int(a[2]), int(a[4]))

a:['0xFF',',','0x00',',','0x00'],总共5个字符