Python:如何将有效的UUID从字符串转换为UUID?

122

我接收到的数据是

   {
        "name": "Unknown",
        "parent": "Uncategorized",
        "uuid": "06335e84-2872-4914-8c5d-3ed07d2a2f16"
    },

我需要将uuidString转换为uuid

我在Python文档中没有找到相关的方法,还是我漏看了一些基础知识?


1
你可能想查看这个问题/答案,还有这里的文档。 :) - summea
4个回答

151

直接将其传递给 uuid.UUID

import uuid

o = {
    "name": "Unknown",
    "parent": "Uncategorized",
    "uuid": "06335e84-2872-4914-8c5d-3ed07d2a2f16"
}

print uuid.UUID(o['uuid']).hex

35

仅在需要 uuid 的字符串表示时,才对 UUID 对象调用 .hex

>>> import uuid
>>> some_uuid = uuid.uuid4()
>>> type(some_uuid)
<class 'uuid.UUID'>
>>> some_uuid_str = some_uuid.hex
>>> some_uuid_str
'5b77bdbade7b4fcb838f8111b68e18ae'
>>> type(some_uuid_str)
<class 'str'>

像其他人上面提到的那样,将UUID字符串转换回UUID实例:

>>> uuid.UUID(some_uuid_str)
UUID('5b77bdba-de7b-4fcb-838f-8111b68e18ae')
>>> (some_uuid == uuid.UUID(some_uuid_str))
True
>>> (some_uuid == some_uuid_str)
False

如果您想的话,甚至可以设置一个小型辅助程序函数来验证 str 并返回UUID:

def is_valid_uuid(val):
    try:
        return uuid.UUID(str(val))
    except ValueError:
        return None

然后使用它:

>>> some_uuid = uuid.uuid4()
>>> is_valid_uuid(some_uuid)
UUID('aa6635e1-e394-463b-b43d-69eb4c3a8570')
>>> type(is_valid_uuid(some_uuid))
<class 'uuid.UUID'>

11

如果上面的答案无法将有效的UUID字符串转换回实际的UUID对象... 使用uuid.UUID(your_uuid_string)对我有用。

In [6]: import uuid
   ...:
   ...: o = {
   ...:     "name": "Unknown",
   ...:     "parent": "Uncategorized",
   ...:     "uuid": "06335e84-2872-4914-8c5d-3ed07d2a2f16"
   ...: }
   ...:
   ...: print uuid.UUID(o['uuid']).hex
   ...: print type(uuid.UUID(o['uuid']).hex)
06335e84287249148c5d3ed07d2a2f16
<type 'str'>

In [7]: your_uuid_string = uuid.UUID(o['uuid']).hex

In [8]: print uuid.UUID(your_uuid_string)
06335e84-2872-4914-8c5d-3ed07d2a2f16

In [9]: print type(uuid.UUID(your_uuid_string))
<class 'uuid.UUID'>

1

基于@slajma的答案,这是一个返回True/False的实用函数:

def is_valid_uuid(val):
try:
    uuid.UUID(str(val))
    return True
except ValueError:
    return False

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接