首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

每日一模块:shortuuid

一、简介

shortuuid是一个Python库,用于生成简短的、唯一的URL安全字符串。在需要简短标识符的场合,比如生成API密钥、数据库记录ID等,shortuuid是一个非常有用的工具。与传统的UUID相比,shortuuid生成的字符串更短,更易于阅读、复制和存储。

二、安装

使用pip可以轻松地安装shortuuid模块:

pip?install?shortuuid

三、基本使用

1. 生成短UUID

使用shortuuid模块的uuid()函数可以生成一个简短的UUID字符串:

import?shortuuid

#?生成短UUID

short_id?=?shortuuid.uuid()

#?打印短UUID

print(f"生成的短UUID是:{short_id}")

每次调用uuid()函数都会生成一个新的、唯一的短UUID。

2.指定长度

默认情况下,shortuuid生成的字符串长度为22个字符。如果需要不同长度的字符串,可以通过uuid()函数的length参数来指定:

import?shortuuid

#?生成指定长度的短UUID

short_id_10?=?shortuuid.ShortUUID().random(length=10)

short_id_15?=?shortuuid.ShortUUID().random(length=15)

#?打印生成的短UUID

print(f"长度为10的短UUID是:{short_id_10}")

print(f"长度为15的短UUID是:{short_id_15}")

注意,缩短UUID长度会增加碰撞(生成重复ID)的风险,因此应根据实际需求谨慎选择长度。

3.从短UUID生成普通UUID

如果你有一个shortuuid生成的短UUID字符串,并且想要将其转换回原始的UUID格式,可以使用decode()函数:

import?shortuuid

import?uuid

#??生成一个uuid

u?=?uuid.uuid4()??#?41ee708c-1676-4c84-b659-d065f6ec80ec

#?将其转换成短UUID字符串

s?=?shortuuid.encode(u)

#?解码短UUID为原始UUID

original_uuid?=?shortuuid.decode(s)

#?打印原始UUID

print(f"原始UUID是:{original_uuid}")

四、高级使用

1. 自定义字母表

shortuuid允许你自定义用于生成短UUID的字母表。这可以用于生成特定格式的字符串,或者排除某些字符以避免与现有系统冲突。

import?shortuuid

#?自定义字母表,移除数字和某些字符

alphabet?=?'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_'

#?使用自定义字母表生成短UUID

shortuuid.set_alphabet(alphabet=alphabet)

#?或

custom_short_id?=?shortuuid.ShortUUID(alphabet=alphabet).uuid()

#?打印生成的短UUID

print(f"使用自定义字母表生成的短UUID是:{custom_short_id}")

2.批量生成短UUID

如果你需要一次性生成多个短UUID,可以使用列表推导式结合uuid()函数:

import?shortuuid

#?生成10个短UUID

short_ids?=?[shortuuid.uuid()?for?_?in?range(10)]

#?打印生成的短UUID列表

for?id?in?short_ids:

print(id)

五、注意事项

??缩短UUID长度会增加生成重复ID的风险。在选择长度时,请权衡唯一性和可读性。

? shortuuid生成的字符串是URL安全的,这意味着它们不包含对URL有特殊意义的字符。

??在多线程环境中使用shortuuid时,它是线程安全的,不需要额外的同步措施。

六、总结

shortuuid是一个功能强大的Python库,用于生成简短的、唯一的URL安全字符串。你可以根据需求灵活地生成和管理短UUID。在实际应用中注意UUID长度的选择以及自定义字母表的使用场景。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OJmW9pcI8JxX7sLp3Tq_peyg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com