字符串转换
‘’’
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))