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