2011-11-29 2 views
3

6.6 XY 좌표 쌍과 날짜를 기반으로 UUID를 생성하려고합니다. 그러나 나는 함수에 '나쁘게 형성된 16 진수 UUID 문자열'을 제공하고있다. Python noob plz help.Python UUID가 잘못 형성된 16 진수 문자열

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

생각대로 작동하지 않습니다.

시간 (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

여전히 스택 테이블이없는 잘못된 16 진수 오류 ... – Simon

+0

이 삭제됩니까? – glglgl

+0

'uuid' 엔진에 무엇이 들어가는 지 알기 위해 새로 추가 된 프린트 라인을 추가하십시오. – glglgl