2017-08-29 9 views
2

私はUUIDのリストを検証し、バージョンを決定する必要があります。たとえば、h ttps://www.beautifyconverter.com/uuid-validator.phpを使用し、25CCCA6F-1568-473E-BFED-EC08C31532C6と入力すると、有効でバージョン4であると判断できます。https://www.snip2code.com/Snippet/12614/Validating-a-uuid4-with-Python-How to determine if a string is a valid v4 UUID?から、UUIDモジュールが一度に1つずつ検証できることがわかります。特定のバージョンですが、UUIDが4つのバージョンすべてをテストしてバージョンを返すかどうかはわかりません。UUIDのリストを検証する方法と返されるUUIDのバージョンは?

+0

あなたは最も難しい部分に対処しました。次に、Pythonでどのようにループするかを調べて、 'uuid'検証関数の真のブール値が見つかったらループから抜け出す。 – Niloct

答えて

0
def validate_uuid4(uuid_string): 

    try: 
     val = UUID(uuid_string, version=4) 
    except ValueError: 
     # If it's a value error, then the string 
     # is not a valid hex code for a UUID. 
     return False 

    return True 

あなたはUUIDの文字列のリストを通過すると、ここで有効なバージョン4 UUID

2

は私がオーバー反復だろうかであれば、それは、リスト内の特定の文字列があるかどうかがわかります上記の関数を使用することができます潜在的なUUIDのリストを取得し、バージョン番号(有効な場合)またはそれ以外の場合はNoneのパラレルリストを返します。

特に、UUIDコンストラクタは、任意のバージョンのUUID文字列を受け入れることに注意してください。文字列が有効な場合は、.versionメンバーに照会してバージョンを確認できます。

from uuid import UUID 


def version_uuid(uuid): 
    try: 
     return UUID(uuid).version 
    except ValueError: 
     return None 

def version_list(l): 
    return [version_uuid(uuid) for uuid in l] 

if __name__=="__main__": 
    uuids = (
     '0d14fbaa-8cd6-11e7-b2ed-28d244cd6e76', 
     '6fa459ea-ee8a-3ca4-894e-db77e160355e', 
     '16583cd3-8361-4fe6-a345-e1f546b86b74', 
     '886313e1-3b8a-5372-9b90-0c9aee199e5d', 
     '0d14fbaa-8cd6-11e7-b2ed-28d244cd6e7', 
     '6fa459ea-ee8a-3ca4-894e-db77e160355', 
     '16583cd3-8361-4fe6-a345-e1f546b86b7', 
     '886313e1-3b8a-5372-9b90-0c9aee199e5', 
     '481A8DE5-F0D1-E211-B425-E41F134196DA', 
    ) 
    assert version_list(uuids) == [1,3,4,5,None,None,None,None,14] 
+0

興味深いですが、ひねりがあります。私がチェックしているリストには、481A8DE5-F0D1-E211-B425-E41F134196DAのいずれのフォーマットにも適合していないUUIDが含まれています。バージョンが正常な位置に "E"があることに注意してください。 – tpcolson

+0

私のコード(正しく、私が主張する)は、そのUUIDのバージョン番号に対して14を返します。あなたは何の行動を期待しましたか? –

+0

あなたのソリューションを試してみると、ブランクがあなたのサンプルデータと一緒に返されます。481A8DE5-F0D1-E211-B425-E41F134196DAをリストに追加すると、トレースバックに失敗します。 Python 2.7.13 64ビット – tpcolson

関連する問題