Saltar al contenido

python: ¿cómo convertir un uuid válido de String a UUID?

El tutorial o código que encontrarás en este post es la resolución más sencilla y efectiva que encontramos a esta duda o dilema.

Solución:

Solo pásalo a uuid.UUID:

import uuid

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


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

no llames .hex en el objeto UUID a menos que necesite el string representación de ese uuid.

>>> import uuid
>>> some_uuid = uuid.uuid4()
>>> type(some_uuid)

>>> some_uuid_str = some_uuid.hex
>>> some_uuid_str
'5b77bdbade7b4fcb838f8111b68e18ae'
>>> type(some_uuid_str)

Luego, como otros mencionados anteriormente para convertir un uuid string volver a la instancia UUID hacer:

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

Incluso podría configurar una pequeña función auxiliar de utilidad para validar el str y devuelva el UUID si desea:

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

Entonces para usarlo:

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

Si la respuesta anterior no funcionó para usted para convertir un UUID válido en string formatear de nuevo a un objeto UUID real… usando uuid.UUID(your_uuid_string) trabajó para mi.

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


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

Recuerda que te permitimos añadir una estimación si diste con el resultado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *