需要生成与BDD的蟒蛇中的唯一编号
问题描述:
我试图做一个脚本,生成一个20位数的随机字符串。但是这些字符串必须是唯一的。需要生成与BDD的蟒蛇中的唯一编号
想象一下,我今天生成20000个随机字符串,明天20000个其他字符串我需要确保我有40000个不同的字符串。
的问题是我有一天近70系列,不知道如何去优化它,就一定要具有唯一的序列具有竞争力的时间的数据量...
感谢你的帮助。
必须符合这个https://ec.europa.eu/health/sites/health/files/files/eudralex/vol-1/reg_2016_161/reg_2016_161_en.pdf
我不能做增量。
答
我同意@ bendl的评论 - 如果您需要它是20位数字,则每次需要新字符串时可以增加一个值。如果它不一定是20位数字,我会说看看python的UUID模块:https://docs.python.org/2/library/uuid.html
此模块创建唯一的ID,可能是你要找的。祝你好运!
答
为确保唯一性,您可以生成字符串作为UUID和时间戳的组合。例如
>>> import uuid
>>> import time
>>> my_string = "{}-{}".format(uuid.uuid4(), time.time())
>>> print my_string
'6cc452ac-5b30-47df-8ea4-7170ec1979b1-1502985399.0055182'
答
基本上你需要创建一个新的随机字符串,并验证它不会在目前的清单存在(如果你不能检查当前的列表,这不能这样做)。
参考https://docs.python.org/3/library/random.html#random.choices
import string
import random
x = 0
itemlist = []
while x < 2000:
newitem = ''.join(random.choice(string.ascii_uppercase + string.digits)
for _ in range(20))
if newitem not in itemlist:
itemlist.append(newitem)
x = x + 1
print newitem
是否有任何理由,你不能只是开始00000000000000000001,并移动到00000000000000000002? – bendl
需要随机字符串不增量与一些复杂性 – swaks