python - 如何在python中检查版本4 UUID?

标签 python uuid

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

2年前关闭。




Improve this question




我必须检查版本 4 UUID,它是证书中的通用名称。有没有内置函数中的python 可用于检查证书中的 UUID prsesnt 是否正确并检查其版本?如果不是如何比较版本 4 UUID

最佳答案

正如 Giacomo Alzetta 所说,UUID 可以与任何其他对象进行比较,使用 == . UUID构造函数对字符串进行规范化,因此 UUID 是否采用非标准形式无关紧要。

import uuid
uuid.UUID('302a4299-736e-4ef3-84fc-a9f400e84b24') == uuid.UUID('302a4299-736e-4ef3-84fc-a9f400e84b24')
# => True
uuid.UUID('302a4299736e4ef384fca9f400e84b24') == uuid.UUID('{302a4299-736e-4ef3-84fc-a9f400e84b24}')
# => True

字符串比较将比较文字字符串,它可能符合也可能不符合 UUID:
'302a4299-736e-4ef3-84fc-a9f400e84b24' == '302a4299-736e-4ef3-84fc-a9f400e84b24'
# => True
'302a4299736e4ef384fca9f400e84b24' == '{302a4299-736e-4ef3-84fc-a9f400e84b24}'
# => False

您可以使用 str(x) 将 UUID 转换为字符串, 或使用 uuid.UUID(x) 将字符串转换为 UUID 对象如上图所示。请注意,您不能将字符串与 UUID 进行比较,只能将字符串与字符串以及 UUID 与 UUID 进行比较。

如果 UUID 字符串是否为其规范形式真的让您感到困扰,您可以尝试将其转换为 UUID 对象并返回字符串(这将为您提供规范形式),并将其与原始形式进行比较:
x = '302a4299-736e-4ef3-84fc-a9f400e84b24'
str(uuid.UUID(x)) == x
# => True
x = '302a4299736e4ef384fca9f400e84b24'
str(uuid.UUID(x)) == x
# => False

然而,你真的不应该关心一个 UUID 字符串是否是规范的——只要它可以被识别为一个 UUID 字符串,它应该就足够了。如果不能...
uuid.UUID("foo")
# => ValueError: badly formed hexadecimal UUID string

如果您需要知道 UUID 的版本,它就在 UUID API 中。 :
uuid.UUID('302a4299-736e-4ef3-84fc-a9f400e84b24').version
# => 4

关于python - 如何在python中检查版本4 UUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53847404/

相关文章:

java - Ebean - 按 UUID 列类型中的 UUID 部分查找

ios - XE7 iOS 部署 UUID 报错

python - 使用 gensim 加载经过训练的 fasttext 模型时出现问题

uuid - 使用 base62(字母数字)UUID 有什么问题吗?

java - UUID 到唯一的整数 id?

python - 创建多线程 tcp 服务器 python 3

PHP 从 mysql 回显十六进制

python - 复制numpy数组的速度

python - 基本错误捕获-用于输入-Python

python - Matplotlib 向条形图添加了太多标签