Python UUID неправильно сформированная шестнадцатеричная строка - PullRequest
3 голосов
/ 29 ноября 2011

Попытка сгенерировать UUID на основе пары координат XY 6.6 и даты. Однако я даю функции «неправильно сформированную шестнадцатеричную строку 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()) + '}'

1 Ответ

3 голосов
/ 29 ноября 2011

Это не сработает так, как вы думаете.

Существует несколько типов UUID : на основе времени (UUID1), случайным образом (UUID4) или на основе других данных UUID plus, соединенных через 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)) + '}'
...