尝试根据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()) + '}'
答案 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)) + '}'