cssutils的序列化程序默认将十六进制颜色转换为简写十六进制颜色。
>>> import cssutils
>>> hex_d = cssutils.parseStyle('color: #aaaaaa')
>>> hex_d.color
#aaa正如你所看到的,#aaaaaa被转换为#aaa。是否有办法配置cssutils的序列化程序以保持完全十六进制颜色的输出?
发布于 2018-03-25 12:12:36
你可以这样做:
_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)我在预邮寄器回购中找到了片段。
更新:
在浏览苏提斯回购之后,我发现有一个Preferences类接受minimizeColorHash参数(默认情况下,它的设置为True)。将其设置为False应防止将彩色散列从全尺寸降到简写的默认行为。
目前有一个错误不允许使用布尔False值来实例化Preferences类。我已经提交了一个按下来解决这个问题。如果您不想等待,您可以直接在本地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发布于 2018-03-25 11:56:16
您可以使用吹风干燥模块来完成这个任务。它需要cssutils作为依赖项。
from blowdrycss import colorparser
hex_d = colorparser.ColorParser('color', '#aaaaaa')
print(hex_d.value)
#Output: #aaaaaahttps://stackoverflow.com/questions/49474946
复制相似问题