4

6.6 XY 座標ペアと日付に基づいて UUID を生成しようとしています。ただし、関数に「不適切な形式の 16 進数 UUID 文字列」を指定しています。Python noob plz ヘルプ。

def LeID(Xv,Yv,Dv):
    import uuid
    import string
    import arcpy
    X_val = "%.6f" % Xv
    Y_val  = "%.6f" % Yv
    date = Dv
    xarr = string.split(X_val, '.')
    yarr = string.split(Y_val, '.')
    date = string.split(date , '/')
    val =  str(xarr[0] + xarr[1] + yarr[0] + yarr[1] + date[0]  + date[1] + date[2] )
    return '{' + str(uuid.UUID(val).time_low()) + '}'
4

1 に答える 1

3

思うようにはいきません。

UUIDにはいくつかのタイプがあります: 時間に基づく (UUID1)、ランダムに (UUID4)、または別の UUID とデータに基づいて、MD5 (UUID3) または SHA1 (UUID5) を介してまとめられます。

したがって、以前に定義された UUID の 1 つ (おそらくUUID('f82aa75f-56a8-442b-89d2-eb7aaae6f9c3')) を名前空間として取得し、これからすべてを派生させます。

def LeID(Xv,Yv,Dv):
    import uuid
    import string
    import arcpy
    MyNS = uuid.UUID('f82aa75f-56a8-442b-89d2-eb7aaae6f9c3')
    X_val = "%.6f" % Xv
    Y_val  = "%.6f" % Yv
    date = Dv
    xarr = string.split(X_val, '.')
    yarr = string.split(Y_val, '.')
    date = string.split(date , '/')
    val =  str(xarr[0] + xarr[1] + yarr[0] + yarr[1] + date[0]  + date[1] + date[2] )
    print MyNS, repr(val) # for debugging
    return '{' + str(uuid.uuid5(MyNS, val)) + '}'
于 2011-11-29T17:49:16.867 に答える