python: how to convert a valid uuid from String to UUID? python: how to convert a valid uuid from String to UUID? python python

python: how to convert a valid uuid from String to UUID?


Just pass it to uuid.UUID:

import uuido = {    "name": "Unknown",    "parent": "Uncategorized",    "uuid": "06335e84-2872-4914-8c5d-3ed07d2a2f16"}print uuid.UUID(o['uuid']).hex


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


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']).hexIn [8]: print uuid.UUID(your_uuid_string)06335e84-2872-4914-8c5d-3ed07d2a2f16In [9]: print type(uuid.UUID(your_uuid_string))<class 'uuid.UUID'>