如何检查字符串是否为rgb十六进制字符串

 三面D夏娃所_729 发布于 2023-02-13 21:21

我试图创建一种校对命令控制台输入的方法,并检查以确保该字符串是一个rgb十六进制字符串.(例如:#FAF0E6)目前我正在尝试:除了:阻止.

def isbgcolor(bgcolor):
    #checks to see if bgcolor is binary
    try:
        float(bgcolor)
        return True
    except ValueError:
        return False

我也试过使用.startswith('#').我已经看到了如何用Java编写这个函数的例子,但我仍然是初学者和Python我所知道的.救命?

2 个回答
  • 通常,查看字符串是否与某种简单格式匹配的最佳方法是实际尝试解析它.(特别是如果你只是检查,那么你可以解析它,如果有效,或打印错误,如果没有.)所以,让我们这样做.

    标准库充满了各种有用的东西,所以总是值得搜索.如果你想解析一个十六进制字符串,首先出现的是binascii.unhexlify.我们想要在第一个#角色之后取消所有内容.所以:

    import binascii
    
    def parse_bgcolor(bgcolor):
        if not bgcolor.startswith('#'):
            raise ValueError('A bgcolor must start with a "#"')
        return binascii.unhexlify(bgcolor[1:])
    
    def is_bgcolor(bgcolor):
        try:
            parse_bgcolor(bgcolor)
        except Exception as e:
            return False
        else:
            return True
    

    这接受3个字符的十六进制字符串(但大多数使用#-prefixed十六进制RGB的数据格式也是如此),甚至是16个字符的字符串.如果要添加长度检查,可以添加.是规则== 6还是in (3, 6)% 3 == 0?我不知道,但如果你有一个你想添加的规则,大概就是你这样做.

    如果你开始使用parse_bgcolor,你会发现bytes当你真正想要0-65535的3个值时,它会给你一个0到0的6个值.你可以手动组合它们,或者你可以将每个双字符对解析为一个数字(例如,用int(pair, 16)),或者你可以输入bytes你已经拥有的6个字符,比如说struct.unpack('>HHH').一旦你确切知道自己想做什么,一旦你需要做什么就很容易.

    最后,如果您正在尝试解析CSS或HTML,那么类似于red或者rgb(1, 2, 3)也是有效颜色.你需要处理那些吗?如果是这样,你需要比这更智能的东西.首先要做的是查看您要解析的内容的规范,并制定转换为代码所需的规则.然后你可以编写代码.

    2023-02-13 21:28 回答
  • 以下内容将匹配十六进制RGB字符串:

    import re
    
    _rgbstring = re.compile(r'#[a-fA-F0-9]{6}$')
    
    def isrgbcolor(value):
        return bool(_rgbstring.match(value))
    

    True#传入以后跟正好6个十六进制数字开头的字符串时,才会返回.

    演示:

    >>> isrgbcolor('#FAF0E6')
    True
    >>> isrgbcolor('#FAF0')
    False
    >>> isrgbcolor('FAF0E6')
    False
    >>> isrgbcolor('#NotRgb')
    False
    

    如果您还想支持3位CSS格式,请更新模式:

    _rgbstring = re.compile(r'#[a-fA-F0-9]{3}(?:[a-fA-F0-9]{3})?$')
    

    这匹配哈希后跟3个十六进制数字,加上可选的3个额外数字.

    2023-02-13 21:29 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有