在 Python 中生成一个唯一的字符串
Generate a unique String in Python
使用该uuid.uuid4()
方法生成唯一的字符串,例如
uuid.uuid4().hex[:length]
. 该uuid.uuid4()
方法生成普遍唯一的标识符。
import uuid def generate_unique_string(length): return uuid.uuid4().hex[:length] print(generate_unique_string(10)) # 👉️ a3d53cbd7a print(generate_unique_string(15)) # 👉️ 3e4dc9e1687f4da print(uuid.uuid4()) # 👉️ 9e40a9bc-6b7d-4ac8-968d-d1bc795ec095 print(uuid.uuid4().hex) # 👉️ b081345e05334b209b1b3226bb3b1ae5 print(uuid.uuid4().hex.upper()) # 👉️ 38C6DDDC8FE546B185F68AEBCCB38F0A
内置的uuid
模块可用于生成唯一的字符串。
如果您只需要一个唯一的字符串,您应该使用
uuid.uuid4方法。
import uuid print(uuid.uuid4()) # 👉️ 91a63f8f-2b9f-423d-b6ac-3242da18cc57 print(uuid.uuid4().hex) # 👉️ a597e953b4ac4b0ebd39af262aa227e3 print(str(uuid.uuid4())[:5]) # 👉️ 34c43 print(str(uuid.uuid4())[:5].upper()) # 👉️ BE8B1
uuid.hex属性将
UUID 作为 32 个字符的小写十六进制字符串返回。
hex
如果您不想在输出中使用任何连字符,则可以使用该属性。
str()
UUID
将UUID
对象转换为字符串是必要的,因为 UUID 对象不可订阅。换句话说,它们不能通过索引或切片访问。
str.upper()
如果需要生成唯一的大写字符和数字字符串,也可以使用该方法。
或者,您可以使用该random.choices()
方法。
使用 random.choices() 生成一个唯一的字符串
要生成唯一字符串:
- 使用
string
模块构造字符串。 - 使用该
random.choices()
模块从字符串中挑选随机字符。 - 使用该
str.join()
方法将随机选择的字符连接成一个字符串。
import random import string def generate_unique_string(length): return ''.join( random.choices( string.ascii_lowercase + string.ascii_uppercase + string.digits, k=length ) ) print(generate_unique_string(10)) # 👉️ AWAr2QCHWt print(generate_unique_string(15)) # 👉️ Jsn59abbUNsBkRe
string.ascii_uppercase
属性返回一个字符串,其中A
包含从到
的大写字母Z
。
string.ascii_lowercase
属性返回一个包含从到
的小写字母的字符串。a
z
import string # 👇️ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ print(string.ascii_letters) print(string.ascii_lowercase) # 👉️ abcdefghijklmnopqrstuvwxyz print(string.ascii_uppercase) # 👉️ ABCDEFGHIJKLMNOPQRSTUVWXYZ print(string.digits) # 👉️ 0123456789
string.digits
方法返回从到的数字字符串。0
9
random.choices
方法接受
一个序列和一个k
关键字参数,并返回k
从序列中选择的元素的大小列表。
import random import string # 👇️ ['G', 'K', 'X', 'G', 'H'] print(random.choices(string.ascii_uppercase, k=5))
str.join()
str.join方法将一个可迭代对象作为参数并返回一个字符串,该字符串是可迭代对象中字符串的串联。
import random import string # 👇️ "FJOSAQDJQX" print(''.join(random.choices(string.ascii_uppercase, k=10)))
调用该方法的字符串用作元素之间的分隔符。
random.choice()
random.choices()
import random import string def generate_unique_string(length): return ''.join( random.choice(string.ascii_lowercase + string.ascii_uppercase + string.digits) for _ in range(length) ) print(generate_unique_string(10)) # 👉️ QK5YPaFYxj print(generate_unique_string(15)) # 👉️ xC0gcNPljaugNVV
我们使用生成器表达式迭代range
长度为 N 的对象。
范围类通常用于循环特定次数。
print(list(range(2))) # 👉️ [0, 1] print(list(range(3))) # 👉️ [0, 1, 2]
在每次迭代中,我们选择一个随机字母并返回结果。
如果您使用random.choice()
的 Python 版本比3.6
.
您选择哪种方法是个人喜好的问题。该
random.choices()
方法更灵活一些,但uuid
如果您只需要一个唯一的字符串,模块就可以完成工作。