在 Python 中生成一个唯一的字符串

在 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如果您不想在输出中使用任何连字符,则可以使用该属性。

如果必须使用字符串切片将结果限制为 N 个字符,请使用类将对象转换为字符串。 str()UUID

UUID对象转换为字符串是必要的,因为 UUID 对象不可订阅。换句话说,它们不能通过索引或切片访问。

str.upper()如果需要生成唯一的大写字符和数字字符串,也可以使用该方法。

或者,您可以使用该random.choices()方法。

使用 random.choices() 生成一个唯一的字符串

要生成唯一字符串:

  1. 使用string模块构造字符串。
  2. 使用该random.choices()模块从字符串中挑选随机字符。
  3. 使用该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
属性返回一个包含从

的小写字母的
字符串az

主程序
import string # 👇️ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ print(string.ascii_letters) print(string.ascii_lowercase) # 👉️ abcdefghijklmnopqrstuvwxyz print(string.ascii_uppercase) # 👉️ ABCDEFGHIJKLMNOPQRSTUVWXYZ print(string.digits) # 👉️ 0123456789

string.digits
方法返回从
到的
数字字符串。09

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)))

调用该方法的字符串用作元素之间的分隔符。

如果您使用的 Python 版本早于 3.6,请使用该方法而不是. 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如果您只需要一个唯一的字符串,模块就可以完成工作。

发表评论