Python中的Txt文件替换

Python中的Txt文件替换,python,parsing,text-files,Python,Parsing,Text Files,我对编程非常陌生,我有一个简单的问题,我只是不知道语法。我有一个常规的文本文件,我想用所有的字母来代替数字。i、 e.如果我找到一个“a”或“a”,我想用数字“1”代替。如果我找到一个“b”或“b”,我想用数字“2”等代替。有人能帮我吗,我知道这是最基本的,但我正在努力学习自己编程,这是相当困难的。谢谢大家! 例如 mappings = { "a" : "1", "b" : "2" } f = open("myfile.txt") for line in f: for oldc, n

我对编程非常陌生,我有一个简单的问题,我只是不知道语法。我有一个常规的文本文件,我想用所有的字母来代替数字。i、 e.如果我找到一个“a”或“a”,我想用数字“1”代替。如果我找到一个“b”或“b”,我想用数字“2”等代替。有人能帮我吗,我知道这是最基本的,但我正在努力学习自己编程,这是相当困难的。谢谢大家!

例如

mappings = { "a" : "1", "b" : "2" }

f = open("myfile.txt")
for line in f:
     for oldc, newc in mappings.items():
         line = line.replace(oldc, newc)

     print line

这是一个过于复杂的答案,但它有几个有用的Python概念,您应该在某个阶段学习。以下是简单的版本:

with open(<path to file>) as f:
    for line in f:
        for char in line:
            if char.isalpha():
                print ord(char) - ord("a") + 1
使用翻译表,以及:

要将文件逐行而不是全部读取到内存中,请执行以下操作:

for line in infile:
  outfile.write(line.translate(tr)table))

你对前一篇文章的评论,现在已经被删除,第一点是不正确的<代码>f=open('input_file','r+');打印(f.read());f、 寻求(0);f、 写('A');f、 寻求(0);打印(f.read())。海报唯一的错误是使用了
rw
而不是
r+
@senderle:问题是你不能写入OP试图写入的文件的中间部分(通过一次变异一个字符),你会发现你错了。@senderle:我的错——你是对的!感谢您花时间检查=)(我想我对插入文件中间感到困惑。)+1用于使用映射,这是比
string.lowercase.index
ord
更通用的解决方案,两者都只按字母顺序将字母映射到数字。
import string
tr_from = string.lowercase

# replace 'a' with 1, ... 'i' with '9', 'j' with '0', 'k' with '1'
# change the '(i+1)%10' part if you want different behavior
tr_to = "".join(str((i+1)%10) for i in xrange(len(tr_from)))

assert len(tr_from) == len(tr_to)

# handling lowercase and uppercase
tr_table = string.maketrans(tr_from + tr_from.upper(), tr_to + tr_to)

with open('infilename', 'r') as infile:
  with open('outfilename', 'w') as outfile:
    # this reads the entire file into memory
    output = infile.read().translate(tr_table)
    outfile.write(output)
for line in infile:
  outfile.write(line.translate(tr)table))