如何读取文本文件,使用字典替换字符,然后保存到新文件

时间:2019-12-06 20:02:50

标签: python python-3.x dictionary

这是学校的作业。我正在使用以下代码:

def main():
    letters = create_letters()
    infile = open('note.txt', 'r')
    text = infile.readlines()
    infile.close()
    outfile = open('notetranslate.txt', 'w')
    outfile.write(text[letters])
    outfile.close()

def create_letters():
    return {'A':'`', 'a':'~', "B":'1', 'b':'!', 'C':'2', 'c':'@', 'D':'3', 'd': '#', 'E':'4', 
    'e':'$', 'F':'5', 'f':'%', 'G':'6', 'g':'^', 'H':'7', 'h':'&', 'I':'8', 'i':'*', 'J':'9', 'j':'(', 
    'K':'0', 'k':')', 'L':'-', 'l':'_', 'M':'=', 'm':'+', 'N':'[', 'n':'{', 'O':']', 'o':'}',
    'P':'|', 'p':'/', 'Q':';', 'q':':', 'R':',', 'r':'<', 'S':'.','s':'>','T':'?', 't':'"',
    'U':'`', 'u':'~', 'V':'1', 'v':'!', 'W':'2', 'w':'@', 'X':'3', 'x':'#', 'Y':'4','y':'$', 
    'Z':'5', "z":'%'}
main()

运行此代码时,我得到一个错误:列表索引必须是整数或切片,而不是字典。

我的任务是编写一个程序,该程序将读取文本文件的内容,然后使用代码字典将文件内容的加密版本写入单独的文本文件。第二个文本文件中的每个字符都应包含文本的加密版本。

编写第二个程序(或将用户的选项菜单添加到当前程序中),以打开一个加密版本并将解密后的文本显示在屏幕上,以供用户阅读

1 个答案:

答案 0 :(得分:1)

目标是用letters中的字典逐个字符替换字符串。

infile = open('note.txt', 'r')
text = infile.read() # read not readlines
infile.close()

subs_text = []
for letter in text:
    subs_text.append(letters[letter]) # lookup the character to be substituted with
subs_text = "".join(subs_text)

outfile = open('notetranslate.txt', 'w+') # use w+ to create file if it does not exist
outfile.write(subs_text)
outfile.close()