[英]Python: encode/decode a string in Django
如果我有一个字符串FOOBAR-efkem4x-dnj3mn-efjn2j-lf4m2l
(采用这种格式),我需要转换为仅包含数值[0-9]
的较短字符串,以便可以将其作为URL中的唯一数字我的Django专案。
因此该字符串应转换为类似324982984829
(长度可以长短也可以长短,无所谓,只要它全是数字)。 解码324982984829
应该使我回到FOOBAR-efkem4x-dnj3mn-efjn2j-lf4m2l
。
最终数值对于每个唯一的字符串都应该是唯一的。
有什么办法吗?
尝试双向字典 ,这是完成该任务的好方法。 一个工作示例如下所示:
class TwoWayDict(dict):
def __setitem__(self, key, value):
# Remove any previous connections with these values
if key in self:
del self[key]
if value in self:
del self[value]
dict.__setitem__(self, key, value)
dict.__setitem__(self, value, key)
def __delitem__(self, key):
dict.__delitem__(self, self[key])
dict.__delitem__(self, key)
def __len__(self):
"""Returns the number of connections"""
# The int() call is for Python 3
return int(dict.__len__(self) / 2)
d = TwoWayDict()
for i in range(10):
d["FOOBAR-efkem4x-dnj3mn-efjn2j-lf4m2l"+str(i)] = str(i)
for i in range(10):
print d['FOOBAR-efkem4x-dnj3mn-efjn2j-lf4m2l'+str(i)], "<->", d[str(i)]
当然,您也可以使用任何其他数字哈希。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.