我的代码是用来替换某些字母(一个用e,e用a和s用3专门)不起作用,但我不太清楚错误是什么,因为它不是在改变文本文件我是喂它。
pattern = "ae|ea|s3"
def encode(pattern, filename):
message = open(filename, 'r+')
output = []
pattern2 = pattern.split('|')
for letter in message:
isfound = false
for keypair in pattern2:
if letter == keypair[0]:
output.append(keypair[1])
isfound = true
if isfound == true:
break;
if isfound == false:
output.append(letter)
message.close()
我现在试图想出这个问题一直在绞尽脑汁......
答案 0 :(得分:0)
这是一个具有所需结果的快速实现,您需要自己修改它以读取文件等:
def encode(pattern, string):
rep = {}
for pair in pattern.split("|"):
rep[pair[0]] = pair[1]
out = []
for c in string:
out.append(rep.get(c, c))
return "".join(out)
print encode("ae|ea|s3", "Hello, this is my default string to replace")
#output => "Hallo, thi3 i3 my dafeult 3tring to rapleca"
如果要修改文件,则需要专门告诉程序写入文件。只需附加到输出变量就不会改变它。
答案 1 :(得分:0)
它不会更改文本文件,因为您没有使用您创建的output
替换文本文件。相反,此函数正在创建output
字符串并将其放在函数末尾。从函数返回output
字符串并将其存储在外部,或者通过写入文件而不附加来替换函数中的文件。
由于这似乎是一个练习,我宁愿不添加代码来执行此操作,因为您可能会从自己编写函数中学到更多知识。