更新:要求是“固定长度为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中找到一个算法吗?
非常感谢任何帮助
答案 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)))