生成ID如何使用零使ID长度相同?

时间:2012-01-03 00:53:29

标签: python google-cloud-datastore

更新:要求是“固定长度为9位”,因此460 000 000 138应为460 000 138

我想在特殊表单上生成ID,例如460 000 000 138,其中46是国家/地区代码,其余是ID,此数字总是(?)具有相同的位数,即四对三位数。

我的输入是此ID,可以预期低于某个最大数字。当从头开始项目时,ID可以是1,然后只要ID不发生冲突就自动增量(我可能需要顺序计数,但在分布式环境中,这可能会同时发生。

所以输入可能是例如138.我现在想填写零和国家号码,在这种情况下瑞典(46)所以输出应该是460 000 000 138

同样,如果输入是1138,则输出应该在同一表格上,填充少于零,即460 000 001 138

所以我不知道我需要多少个零。你能帮助我吗?解决方案应该在python中。我可能会使用实体ID,填充零并添加国家代码,你能帮我在python中找到一个算法吗?

非常感谢任何帮助

3 个答案:

答案 0 :(得分:4)

string.zfill()正是为了这个目的。

>>> "1138".zfill(10)
0000001138

之后,您只需要格式化字符串以添加国家/地区代码,然后在需要的地方插入空格

答案 1 :(得分:3)

def makeid(countrycode, n):
    countrycode = str(countrycode)
    n = str(n)
    return "%s%s%s" % (countrycode, '0'*(12-len(countrycode)-len(n)), n)

答案 2 :(得分:1)

“总是(?)”确实。瑞典= 46看起来像你的意思是电话不一定是国家代码,变量长度......例如中国= 86,香港(不是国家)= 852,加拿大=美国= 1.你的身份证是否允许是否可变长度?

如果允许变量,则需要执行str(countrycode) + str(n).zfill(10) ...这样n最多可以包含10位数。

否则,对于12位数的固定总长度,您需要str(countrycode) + str(n).zfill(12 - len(str(countrycode)))