我需要验证 UUID 列表并确定版本。例如,使用 h ttps://www.beautifyconverter.com/uuid-validator.php并输入 25CCCA6F-1568-473E-BFED-EC08C31532C6 我可以确定它是有效的,并且是版本 4。我从https:/ /www.snip2code.com/Snippet/12614/Validating-a-uuid4-with-Python-以及如何确定字符串是否是有效的 v4 UUID?UUID 模块可以一次验证一个,或测试特定版本,但不确定 UUID 是否会测试所有 4 个版本并返回版本。
下面是我如何迭代潜在的 UUID 列表并返回带有版本号(如果有效)或None其他的并行列表。
请特别注意,UUID构造函数接受任何版本的 UUID 字符串。如果字符串有效,您可以查询.version成员以确定版本。
from uuid import UUID
def version_uuid(uuid):
try:
return UUID(uuid).version
except ValueError:
return None
def version_list(l):
return [version_uuid(uuid) for uuid in l]
if __name__=="__main__":
uuids = (
'0d14fbaa-8cd6-11e7-b2ed-28d244cd6e76',
'6fa459ea-ee8a-3ca4-894e-db77e160355e',
'16583cd3-8361-4fe6-a345-e1f546b86b74',
'886313e1-3b8a-5372-9b90-0c9aee199e5d',
'0d14fbaa-8cd6-11e7-b2ed-28d244cd6e7',
'6fa459ea-ee8a-3ca4-894e-db77e160355',
'16583cd3-8361-4fe6-a345-e1f546b86b7',
'886313e1-3b8a-5372-9b90-0c9aee199e5',
'481A8DE5-F0D1-E211-B425-E41F134196DA',
)
assert version_list(uuids) == [1,3,4,5,None,None,None,None,14]
Run Code Online (Sandbox Code Playgroud)
def validate_uuid4(uuid_string):
try:
val = UUID(uuid_string, version=4)
except ValueError:
# If it's a value error, then the string
# is not a valid hex code for a UUID.
return False
return True
Run Code Online (Sandbox Code Playgroud)
您可以使用上面的函数来遍历 uuid 字符串列表,它会告诉您列表中的特定字符串是否是有效的版本 4 uuid