Python replace() 函数不起作用 - 尽管在新函数中
Python replace() function not working - although in a new function
我正在制作一个使用 replace
函数将字符更改为 x[alphabet number]/
的函数。
现在看起来像这样:
def compile(File):
f=open(File,'r') #open the file parameter
content=f.read() #create the content variable.
a=content.replace('a','x1/').replace('b','x2/').replace('c','x3/').replace('d','x4/').replace('e','x5/').replace('f','x6/').replace('g','x7/')... # and so on.
print(a)
这将是输出:
x24/13/x24/1/x24/11/x24/5/x32/x27/x24/6/x24/21/x24/14/x24/3/x24/20/x24/9/x24/15/x24/14/x28/x32/x24/19/x24/1/x25/x32/'Hx24/9/x30/'x29/x24/1/x24/19/x24/11/x32/'Ux24/19/x24/5/x24/18/x24/14/x24/1/x24/13/x24/5/x28/x32/'x29/x24/1/x24/19/x24/11/x32/'Px24/1/x24/19/x24/19/x24/23/x24/15/x24/18/x24/4/x28/x32/'
这就是我想要的,但是如果我想把它改回来,那就行不通了。
def decompile():
comp=open(run,'r').read()
a=comp.replace('x1/','a').replace('x2/','b').replace('x3/','c').replace('x4/','d').replace('x5/','e').replace('x6/','f').replace('x7/','g')... #and so on.
print(a)
但是现在,这将是输出。
x13/x1/x11/x5/ $x6/x21/x14/x3/x20/x9/x15/x14/: x19/x1/y 'Hx9/!' | x1/x19/x11/ 'Ux19/x5/x18/x14/x1/x13/x5/: ' | x1/x19/x11/ 'Px1/x19/x19/x23/x15/x18/x4/: '
$x6/x21/x14/x3/x20/x9/x15/x14/
这是为什么?
def compile(a):
content= a
a=content.replace('a','x1/').replace('b','x2/').replace('c','x3/').replace('d','x4/').replace('e','x5/').replace('f','x6/').replace('g','x7/')# and so on.
print(a)
def decompile(b):
comp= b
s=comp.replace('x1/','a').replace('x2/','b').replace('x3/','c').replace('x4/','d').replace('x5/','e').replace('x6/','f').replace('x7/','g')
print(b)
g = "abcdefg"
compile(g)
decompile(g)
这段代码完美无缺,做同样的事情只是添加文件而不是字符串。
您必须使用 Regex 模块
import re
def compile(content):
return re.sub(r'[a-z]', lambda match: f"x{ord(match.group())-ord('a')+1}/", content)
def decompile(content):
return re.sub(r'x(\d+)/', lambda match: chr(int(match.group(1))-1+ord('a')), content)
g = "a13bc35defg"
r = compile(g)
print(r)
print(decompile(r))
不要将读取的文件放入您的 compile
和 decompile
函数中。
我正在制作一个使用 replace
函数将字符更改为 x[alphabet number]/
的函数。
现在看起来像这样:
def compile(File):
f=open(File,'r') #open the file parameter
content=f.read() #create the content variable.
a=content.replace('a','x1/').replace('b','x2/').replace('c','x3/').replace('d','x4/').replace('e','x5/').replace('f','x6/').replace('g','x7/')... # and so on.
print(a)
这将是输出:
x24/13/x24/1/x24/11/x24/5/x32/x27/x24/6/x24/21/x24/14/x24/3/x24/20/x24/9/x24/15/x24/14/x28/x32/x24/19/x24/1/x25/x32/'Hx24/9/x30/'x29/x24/1/x24/19/x24/11/x32/'Ux24/19/x24/5/x24/18/x24/14/x24/1/x24/13/x24/5/x28/x32/'x29/x24/1/x24/19/x24/11/x32/'Px24/1/x24/19/x24/19/x24/23/x24/15/x24/18/x24/4/x28/x32/'
这就是我想要的,但是如果我想把它改回来,那就行不通了。
def decompile():
comp=open(run,'r').read()
a=comp.replace('x1/','a').replace('x2/','b').replace('x3/','c').replace('x4/','d').replace('x5/','e').replace('x6/','f').replace('x7/','g')... #and so on.
print(a)
但是现在,这将是输出。
x13/x1/x11/x5/ $x6/x21/x14/x3/x20/x9/x15/x14/: x19/x1/y 'Hx9/!' | x1/x19/x11/ 'Ux19/x5/x18/x14/x1/x13/x5/: ' | x1/x19/x11/ 'Px1/x19/x19/x23/x15/x18/x4/: '
$x6/x21/x14/x3/x20/x9/x15/x14/
这是为什么?
def compile(a):
content= a
a=content.replace('a','x1/').replace('b','x2/').replace('c','x3/').replace('d','x4/').replace('e','x5/').replace('f','x6/').replace('g','x7/')# and so on.
print(a)
def decompile(b):
comp= b
s=comp.replace('x1/','a').replace('x2/','b').replace('x3/','c').replace('x4/','d').replace('x5/','e').replace('x6/','f').replace('x7/','g')
print(b)
g = "abcdefg"
compile(g)
decompile(g)
这段代码完美无缺,做同样的事情只是添加文件而不是字符串。
您必须使用 Regex 模块
import re
def compile(content):
return re.sub(r'[a-z]', lambda match: f"x{ord(match.group())-ord('a')+1}/", content)
def decompile(content):
return re.sub(r'x(\d+)/', lambda match: chr(int(match.group(1))-1+ord('a')), content)
g = "a13bc35defg"
r = compile(g)
print(r)
print(decompile(r))
不要将读取的文件放入您的 compile
和 decompile
函数中。