Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python反向替换_Python - Fatal编程技术网

Python反向替换

Python反向替换,python,Python,帮助修复反向方法。。。(文本到数字,然后反向,数字到文本) 以下是未经编辑的完整代码 chars=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","t","s","u","v","w","x","y","z","!","@","#","$","%","^","&","*","(",")","<",">","?","/","[","]","{","}","-","_","=","+

帮助修复反向方法。。。(文本到数字,然后反向,数字到文本) 以下是未经编辑的完整代码

chars=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","t","s","u","v","w","x","y","z","!","@","#","$","%","^","&","*","(",")","<",">","?","/","[","]","{","}","-","_","=","+"," "];
numbs1=["01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49"];
rechars1=dict(zip(chars,numbs1));
rechars2=dict(zip(numbs1,chars)); # ??
stringa=raw_input(""); #Letters and symbols only-->encrypt
stringb=''.join(rechars1.get(c,c) for c in stringa);
stringc=''.join(rechars2.get(c,c) for c in stringb); # ??
print "Plain:     ",stringa;
print "Encoded:   ",stringb;
print "Unencoded: ",stringc; #same as stringb??
chars=[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”、“t”、“s”、“u”、“v”、“w”、“x”、“y”、“z”、“!”、“@”、“#”、“$”、“%”、“%、“*”、“(“、”、“、”、“?”、“/”、“[”、“]、“、”、“、”、“、”、“、”、“、”、“、”、“、”、”;
编号1=[“01”、“02”、“03”、“04”、“05”、“06”、“07”、“08”、“09”、“10”、“11”、“12”、“13”、“14”、“15”、“16”、“17”、“18”、“19”、“20”、“21”、“22”、“23”、“24”、“25”、“26”、“27”、“28”、“29”、“30”、“31”、“32”、“33”、“34”、“35”、“36”、“37”、“38”、“39”、“40”、“41”、“42”、“43”、“44”、“45”、“46”、“47”、“48”、“49];
rechars1=dict(zip(chars,numbs1));
rechars2=dict(zip(numbs1,chars))??
stringa=原始输入(“”)#仅字母和符号-->加密
stringb=''.join(rechars1.get(c,c)表示stringa中的c);
stringc=''.join(rechars2.get(c,c)表示stringb中的c);#??
打印“普通:”,stringa;
打印“编码:”,字符串B;
打印“未编码:”,stringc#与stringb相同??
如果您知道每个输入字符都经过翻译(不包含数字或其他字符),则可以按如下方式反转:

decipher = dict(zip(numbs1,chars)) 
stringc = ''.join(decipher[stringb[i:i+2]] for i in range(0, len(stringb), 2));
print "Decoded: ", stringc

但是,如果一个输入字符没有被翻译,那么像这里这样的成对字符将不起作用(因为每对字符不会与原始字符中的一对对齐)。

障碍在于如何将诸如“20051920”之类的字符串分解为两位数列表。如果你克服了这种拥挤,你可以用rechars2把它翻译回来

我的解决方案使用正则表达式:

import re
stringb = '20051920'
print re.findall(r'\d\d', stringb) # ['20', '05', '19', '20']

逆转什么?请详细说明。Python中不需要分号。我知道,但我更喜欢分号。作为对您下面回答的回应,我尝试过,如果原始字符串中有两位数,则无法反转您给出的编码。这个两位数的数字不会被翻译,因此你无法判断它是原件还是应该翻译回去。(例如,
“a01”
会翻译成
“0101”
——这是不可能翻译回来的,因为它可能是
“aa”
“a01”
“01a”
,或
“0101”中的任何一个。)
。这是文本-->数字加密。数字-->文本解密。我将发布完整的代码。添加了这一点,但出现了错误@master101:Typo-将
[I:I+1]
更改为
[I:I+2]
序列已反转,感谢我对其进行了编辑,因此有一个单独的编码器和解码器…并对其进行了修改,以便支持数字