微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据字符串值创建唯一的短ID

如何解决根据字符串值创建唯一的短ID

我有一些数据,这些数据具有以字符串形式存储的唯一ID:

ddd.dddddaddd.dddddz

其中d是一些数字,而a / z是一些字母字符。数字可以是0-9,E的字符可以是Wa,而N的字符可以是S

我想将其转换为唯一的整数,而我使用z模块尝试过的返回:

hashlib

有没有一种方法可以从字符串中生成唯一的整数ID,使其不超过12位数字?我知道我永远不需要12位以上的唯一整数ID。

解决方法

简单一些:

>>> s = '123.45678W123.45678S'
>>> int(s.translate(str.maketrans('EWNS','1234','.')))
123456782123456784

这不是问题中仍然要问的12位数字,而是注释中允许的20位数字以下。

,

在处理坐标时,我会尽力将信息保留在最后的12位ID中。

  • 如果您的观点是全球性的,则可能有必要保留学位,但程度可能会很广泛,因此在准确性方面您可能会牺牲一些信息。
  • 如果您的点是局部的(都在小于10度的范围内),则可以跳过度的前两位,而将焦点放在小数点上。
  • 由于两点可能彼此靠近,因此谨慎地保留一位数字作为序列号。

关于广泛观点的建议:

s = "123.45678N123.45678E"
ident = "".join([s[0:6],s[10:16]]).replace(".","")
q = 0
if s[9]=="N":
    q+=1
if s[-1]=="E":
    q+=2
ident+=str(q)+'0'

该示例将转换为123451234530

在为每个ID计算了初始ident号之后,如果已经使用了ident,则应该遍历它们并递增最后一位数字。

通过这种方式,您只需将前10位数字分隔为ddd.dd格式的两个度,然后使用[-2]数字作为象限的指示符即可轻松地从ID重构位置(0:SW,1 :SE,2:NW,3:NE)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。