cssutils 的序列化程序默认情况下将十六进制颜色转换为简写十六进制颜色。例如:
>>> import cssutils
>>> hex_d = cssutils.parseStyle('color: #aaaaaa')
>>> hex_d.color
#aaa
正如您所见, #aaaaaa 已转为 #aaa 。有没有办法配置cssutils的序列化器以某种方式在输出中保持完整十六进制颜色?
答案 0 :(得分:0)
您可以使用blowdrycss模块执行此操作。它需要cssutils
作为依赖。
from blowdrycss import colorparser
hex_d = colorparser.ColorParser('color', '#aaaaaa')
print(hex_d.value)
#Output: #aaaaaa
答案 1 :(得分:0)
你可以这样做:
_short_color_codes = re.compile(r'^#([0-9a-f])([0-9a-f])([0-9a-f])$', re.I)
def get_full_hex(shorthand_val):
return _short_color_codes.sub(r'#\1\1\2\2\3\3', shorthand_val)
hex_d = cu.parseStyle('color: #aaaaaa')
get_full_hex(hex_d.color)
我在premailer repo。
中找到了该代码段<强>更新强>
浏览cssutils个回购后,我发现有一个Preferences
类需要minimizeColorHash
个参数(默认设置为True
)。将其设置为False
应该可以防止将colorhash从完整大小最小化为速记的默认行为。
目前存在一个错误,它不允许使用布尔False
值来实例化Preferences
类。我已提交PR来解决此问题。如果您不想等待,可以直接在本地cssutils
模块中应用上述PR中的代码,以使其立即生效。
然后你就可以做到:
import cssutils as cu
prefs = cu.serialize.Preferences(minimizeColorHash=False)
ser = cu.serialize.CSSSerializer(prefs=prefs)
cu.setSerializer(ser)
hex_d = cu.parseStyle('color: #aaaaaa')
hex_d.color
# #aaaaaa