如何检查 python 中的版本 4 UUID?
How to check version 4 UUIDs in python?
我必须检查版本 4 UUID,它作为证书中的通用名称存在。 built function中是否有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
我必须检查版本 4 UUID,它作为证书中的通用名称存在。 built function中是否有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