Python: 如何将有效的 UUID 从 String 转换为 UUID?

我收到的数据是

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

我需要把 uuidString转换成 uuid

我没有找到一个方法在 巨蟒文档,或者我错过了一些基本的东西在这里?

116507 次浏览

Just pass it to uuid.UUID:

import uuid


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


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

If the above answer didn't work for you for converting a valid UUID in string format back to an actual UUID object... using uuid.UUID(your_uuid_string) worked for me.

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'>

Don't call .hex on the UUID object unless you need the string representation of that uuid.

>>> 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'>

Then as others mentioned above to convert a uuid string back to UUID instance do:

>>> 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

You could even set up a small helper utility function to validate the str and return the UUID back if you wanted to:

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

Then to use it:

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