133 votes

python : comment convertir un uuid valide de String en UUID ?

Je reçois les données comme

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

et je dois convertir le uuid de String a uuid

Je n'ai pas trouvé de moyen sur le documentation python ou est-ce que je rate quelque chose de fondamental ?

164voto

Blender Points 114729

Il suffit de le passer à uuid.UUID :

import uuid

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

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

42voto

slajma Points 187

N'appelez pas .hex sur l'objet UUID, sauf si vous avez besoin de la représentation en chaîne de cet 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'>

Ensuite, comme d'autres l'ont mentionné ci-dessus, pour reconvertir une chaîne d'UUID en instance d'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

Vous pourriez même mettre en place une petite fonction utilitaire d'aide pour valider l'adresse de l'utilisateur. str et renvoyer l'UUID si vous le souhaitez :

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

Puis de l'utiliser :

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

12voto

Weezy.F Points 214

Si la réponse ci-dessus n'a pas fonctionné pour vous permettre de convertir un UUID valide au format chaîne en un objet UUID réel... en utilisant uuid.UUID(your_uuid_string) a fonctionné pour moi.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X