将数字转换为字符串

时间:2014-01-15 23:51:31

标签: python string numbers

如果我有一个字符串s ='ABCDEFJHI',我将它切成这样['ABC','DEF','JHI']。 我有函数编码(一些计算),它将切片的字符串转换为数字。

for example 'encode('ABC' ) gives 50 , encode('DEF') gives 33, encode('JHI') gives 10

['ABC','DEF','JHI']给出[50,33,10]。 我想做相反的情况,解码(50)给'ABC' 我知道当我编码子字符串时,我创建了一个库,然后我附加了一个子字符串,其编号如下:('ABC':50)(对所有子字符串做同样的事情),稍后解码我会只需根据数字提取子字符串。 我怎么能在python中做到这一点?

2 个答案:

答案 0 :(得分:1)

在您的编码功能中:

def encode(the_string):
    #do whatever encoding you're doing
    return (the_number,the_string)

无论你在哪里使用它,都可以:

d = dict()
for value in ["ABC","DEF","JHI"]:
    encoded,decoded = encode(value)
    d[encoded] = decoded

定义一个函数,如:

def decode(lookup_table,value):
    return lookup_table[value]

并使用它:

encoded_values = list()
for value in ["ABC","DEF","JHI"]:
    encoded,decoded = encode(value)
    d[encoded] = decoded
    encoded_values.append(encoded)

for value in encoded_values:
    print("{} | {}".format(value,decode(d,value)))

[OUT]
50 | ABC
33 | DEF
10 | JHI

那就是说 - 你为什么这样做,你是怎么做到的,为什么你不使用某种真正的加密技术?如果它不是双向加密,你几乎肯定不会将数据存储在任何地方,如果它是双向加密,为什么不用你用来加密的相反算法​​解密呢?请记住这一点......

答案 1 :(得分:1)

如果它是可逆的,我建议以反向格式存储它(50:'ABC')。而且,想象一下给定代码之前没有编码的情况。

encode_history = {}

def encode(str):
    """some calculations which lead to the code"""
    ... your calculations ...
    encode_history[code] = str
    return code


def decode(code):
    """function to convert a code to string"""
    if code in encode_history:
        return encode_history[code]
    else:
        return None