2011-11-29 50 views
3

試圖基於一個6.6 XY一個UUID座標對和日期。不過,我給這個函數一個'形成十六進制的UUID字符串'。 Python noob plz幫助。Python的UUID格式錯誤的十六進制字符串

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()) + '}' 

回答

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)) + '}' 
+0

它仍然下降的厲害形成六角錯誤... – Simon

+0

沒有一個堆棧跟蹤? – glglgl

+0

請加我新添加的打印線,以找出進入'uuid'引擎。 – glglgl

相關問題