【问题标题】:How to exlcude grey colour code from the file如何从文件中排除灰色代码
【发布时间】:2017-09-23 02:21:02
【问题描述】:

并解析 HTML 文件。但是我需要排除灰色,我现在是用黑色做的,但是如果条件允许我知道如何使用它,灰色有很多变化。

if style.find("color")>=0:
        aux = style[style.find("color"):]
        aux = aux[0:aux.find(";") + 1]
        
        if aux.find('#000000') < 0 and aux.find('black') < 0 and aux.find('#000') < 0: 
            use_raw = '%s%s' % (use_raw, aux)

这就是我排除黑色的方式,但在这里我也想排除灰色。

【问题讨论】:

  • “纯”灰色对于 RGB 值始终具有相同的值,您可以将值 000000 拆分为 3 组,每组 2 位,每种颜色每组,如果 3 组相等,则有灰色。
  • 但是,在 python 中我们无法拆分值,因为它会抛出错误,它应该是 str
  • 你可以使用切片。剥离 # 并检查 x[:2] == x[2:4] == x[4:] 其中 x 是十六进制颜色。
  • 正则表达式?
  • Rachit,那个正则表达式对你有用吗?

标签: python html


【解决方案1】:

您可以使用正则表达式。 ^#([a-fA-F0-9]{1,2})\1\1$ 将识别所有 6 位和 3 位灰色十六进制颜色。


说明

识别“灰色”

所有灰色十六进制颜色代码都有 3 组 2 位数字 或 3 个相同数字。例如#151515、#1C1C1C、#2E2E2E、#424242、#555、#EEE..... 这就是我们如何将它们识别为灰色的方法。

判断字符串是否满足“灰色”格式

因此我会使用正则表达式。以下正则表达式将匹配所有以# 开头的字符串,并包含 3 个相同的连续 2 位字母数字字符集。因此匹配所有灰色。

^#([a-fA-F0-9]{1,2})\1\1$

使用 Python 应用

import re
pattern = re.compile("^#([a-fA-F0-9]{1,2})\1\1$")
pattern.match(aux)

有关正则表达式,请参阅 Python 文档:https://docs.python.org/3/library/re.html

参考资料:

【讨论】:

  • 您可以将您的正则表达式更改为^#([a-fA-F0-9]{1,2})\1\1$,它应该适用于三位颜色。
  • 没想到,谢谢@Blender!我已经修改了答案
  • 哪个部分不起作用?我需要更具体的东西才能提供帮助:)
【解决方案2】:

你可以做类似的事情

    for i in ["lightgray", "lightgrey", "silver", "darkgray", "darkgrey",
            "gray", "grey", "dimgray", "dimgrey", "darkslategrey"]:
        if aux.find(i)<0:
            use_raw = '%s%s' % (use_raw, aux)
    for i in range(1,256):
        if aux.find('#%02x%02x%02x'%(i,i,i))<0 and format(i<<16 | i<<8 | i, '06X')<0 and format(i<<16 | i<<8 | i, '06x')<0:
            use_raw = '%s%s' % (use_raw, aux)

您可能可以使代码更小更高效,但我想这是一个简单的答案。 (这确实只包括严格灰色。不允许有细微的变化。)

【讨论】:

  • @RachitAgarwal,该列表涵盖所有基础。带范围的 for 函数旨在涵盖所有 hexa 3 位、6 位和 RGB 颜色代码。
猜你喜欢
  • 1970-01-01
  • 2020-09-28
  • 2017-10-16
  • 1970-01-01
  • 2019-06-01
  • 2010-11-25
  • 1970-01-01
  • 2015-05-22
  • 2015-09-26
相关资源
最近更新 更多