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

Kar*_*ogi -1 python uuid

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

Ama*_*dan 6

正如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
Run Code Online (Sandbox Code Playgroud)

字符串比较将比较可能符合或不符合UUID的文字字符串:

'302a4299-736e-4ef3-84fc-a9f400e84b24' == '302a4299-736e-4ef3-84fc-a9f400e84b24'
# => True
'302a4299736e4ef384fca9f400e84b24' == '{302a4299-736e-4ef3-84fc-a9f400e84b24}'
# => False
Run Code Online (Sandbox Code Playgroud)

您可以使用来将UUID转换为字符串str(x),或使用来将字符串转换为UUID对象uuid.UUID(x)。请注意,您不能将字符串与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
Run Code Online (Sandbox Code Playgroud)

但是,您实际上不必关心UUID字符串是否规范-只要可以将其识别为UUID字符串,它就足够了。如果不能...

uuid.UUID("foo")
# => ValueError: badly formed hexadecimal UUID string
Run Code Online (Sandbox Code Playgroud)

如果您需要了解UUID的版本,可以在UUIDAPI中找到

uuid.UUID('302a4299-736e-4ef3-84fc-a9f400e84b24').version
# => 4
Run Code Online (Sandbox Code Playgroud)

  • 尝试使用 ValueError: `val = UUID(your_uuid_string, version=4)` 除外 (2认同)