python - 可区分的字符?

标签 python

我的数据库中有一堆项目。每个都分配了一个唯一的 ID。我想缩短这个 ID 并将其显示在页面上,这样如果我的用户需要就特定项目联系我们(通过电话),他可以给我们缩短的 ID,而不是一个很大的数字。类似于 SKU,在 NCIX 等网站上.因此,我考虑将其编码为 base 36。然而,问题是像 1lI 这样的字母看起来都一样。所以,我在考虑消除相似者。这是个好主意,还是我应该使用真正清晰的字体?

最佳答案

是的,您应该消除混淆的来源。因为如果可以犯错,就会有人犯错。很容易将 0 与 O 和 I 与 l 或 1 混淆——因此不应同时使用它们。好吧,这很简单——因为您不会使用 3 个字符(i、L 和 o),只需获取基数 36-3 = 33 中的数字并转换

SKU.replace('I','X').replace('L','Y').replace('O','Z')

相反,当给出这样的代码并且在执行 int(SKU, 33) 之前,您将不得不将 XYZ 返回到混淆字符。在此之前,如果 - 正如预期的那样 - 你错误地给出了 L 或 I,请替换为 1,如果给出 O,请替换为 0。例如使用 SKU.translate() 与 string.maketrans('LIOXYZ','110IL0')

关于python - 可区分的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3082812/

相关文章:

python - Python中字符串的复杂解析

python - Python 或 Django 中的 CURL

python - Python 中的字符串格式化 %i

python - 如何在 Python 中读取连续的 HTTP 流数据?

python - 如何唯一地组合2个列表

python - 创建和引用单独的 matplotlib 图

python - 继承 numpy.vectorize-ed 函数

python - 访问 .tar 文件中的 .tar 文件

python - 使用光流计算实际速度

python - 如何信任 setuptools 的证书