0

我的代码用于替换某些字母(a 用 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()  

一直在绞尽脑汁想弄清楚这件事有一段时间了..

4

2 回答 2

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"

如果你想修改一个文件,你需要专门告诉你的程序写入文件。简单地附加到您的输出变量不会改变它。

于 2012-06-01T07:28:15.827 回答
0

它不会更改文本文件,因为您不会用output您创建的文本文件替换文本文件。相反,此函数正在创建output字符串并将其放在函数末尾。从函数返回output字符串并将其存储在外部,或者通过写入文件而不附加来替换函数中的文件。

由于这看起来像是一个练习,我宁愿不添加代码来完成它,因为您可能会从自己编写函数中学到更多。

于 2012-06-01T07:28:50.267 回答