Recibo los datos como
{
"name": "Unknown",
"parent": "Uncategorized",
"uuid": "06335e84-2872-4914-8c5d-3ed07d2a2f16"
},
y necesito convertir el uuid
de String
a uuid
No encontré una manera en el documentos de Pythono me estoy perdiendo algo básico aquí?
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 la representación de cadena de ese 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'>
Luego, como otros mencionaron anteriormente, para convertir una cadena uuid nuevamente en una instancia UUID, haga lo siguiente:
>>> 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))
<class 'uuid.UUID'>
Si la respuesta anterior no funcionó para usted para convertir un UUID válido en formato de cadena 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
<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'>
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
Es posible que desee consultar esta otra pregunta/respuesta y también los documentos aquí. 🙂
– summea
7 de abril de 2013 a las 5:23