字符串加密、字符串转换

字符串转换

‘’’
abcdefghi j k l m n o p q r s t u v w x y z
123456789 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
字符串加密:
字符a-i 分别用 1-9 表示
字符j-z 分别用 10@-26@ 表示
返回映射后形成的新字符串(只需要输出已经转换成功的部分,不能转换的则不输出)
例如:
输入 1326@ 输出acz
输入 36@1 输出cfa
‘’’

d = {'1':'a','2':'b','3':'c','4':'d','5':'e','6':'f','7':'g','8':'h','9':'i',
    '10@':'j',
    '11@':'k',
    '12@':'l',
    '13@':'m',
    '14@':'n',
    '15@':'o',
    '16@':'p',
    '17@':'q',
    '18@':'r',
    '19@':'s',
    '20@':'t',
    '21@':'u',
    '22@':'v',
    '23@':'w',
    '24@':'x',
    '25@':'y',
    '26@':'z'
}

def jieMiStr(s) :
    print('原字符串:',s)
    # 定义数组用于存放带有@符号的字符串
    lst = []
    # 定义切片的索引位置
    tlst = []

    dindex = {}

    for i in range(2,len(s)):
        if (s[i] == '@') :
            # 将带有@符号的切片出来
            string = s[i-2:i+1]
            lst.append(string)
            t = (i-2,i+1)
            tlst.append(t)
            dindex[t] = string
    # 将字符串中带有@符号的字符串去掉
    print('lst',lst)
    print('tlst:',tlst)
    print('dindex:',dindex)
    s2 = s
    for i in lst:
        s2 = s2.replace(i,'###')
    print('替换后字符串',s2)
    # 替换非@字符串
    s3 = ''
    for i in s2:
        #print(i)
        if (i != '#' and i !='0') :
            v = d[i]
            s3 = s3 + v
        else:
            if (i != '0') :
                s3 = s3 + i

    print('映射后的字符串:',s3)
    # 对#进行映射
    for i in tlst:
        value = dindex[i]
        g = d.get(value,'*')
        if (g == '*') :
            st = ''
            for i in value:
                g2 = d.get(i,'*')
                if (g2 == '*'):
                    continue
                else:
                    st = st + d[i]
            s3 = s3.replace('###',st,1)
        else:
            s3 = s3.replace('###',g,1)
    return s3

if __name__ == '__main__':
    s = '91@27@27@02@'
    print(jieMiStr(s))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值