Python UUID严重形成十六进制字符串

时间:2011-11-29 17:41:33

标签: python arcmap

尝试根据6.6 XY坐标对和日期生成UUID。但是我给函数一个'格式错误的十六进制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()) + '}'

1 个答案:

答案 0 :(得分:3)

它不会像你想象的那样发挥作用。

UUID有几种类型:基于时间(UUID1),随机(UUID4)或基于另一个UUID加数据,通过MD5(UUID3)或SHA1(UUID5)组合在一起。

因此,您可以将一个先前定义的UUID(可能是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)) + '}'