我想使用文本文件中的编码指令替换字符。
我的文本文件包含以下行:
This is a message
我想替换a -> e
,e -> a
,s -> 3
所以该行写着:
Thi3 i3 e massega
我尝试了以下代码,但它一次只更改了一行中的一个字符。
import sys
import codecs
def encode():
path = "C:\Users\user\Desktop"
basename = "assgn2part1.txt"
filename = path + "\\" + basename
#file = open(filename, "rt")
f = codecs.open(filename,encoding='utf-8')
contents = f.read()
print contents ,"\n"
newcontents = contents.replace('a','e')
newcontents = contents.replace('s', '3')
print newcontents
f.close()
答案 0 :(得分:11)
替换它:
newcontents = contents.replace('a','e')
newcontents = contents.replace('s', '3')
用这个:
newcontents = contents.replace('a','e')
newcontents = newcontents.replace('s', '3')
或者更好:
newcontents = contents.replace('a','e').replace('s', '3')
您的代码似乎只会尝试将'a'替换为'e',而不是'e'替换为'a'。为此,您需要以下内容:
import string
newcontents = contents.translate(string.maketrans("aes", "ea3"))
答案 1 :(得分:3)
>>> strs="this is a message"
>>> strs="".join(['a' if x=='e' else 'e' if x=='a' else '3' if x=='s' else x for x in strs])
>>> print(strs)
thi3 i3 e ma33ega
或罗伯特建议,请使用字典
>>> strs="this is a message"
>>> dic={'a':'e','e':'a','s':'3'}
>>> strs="".join((dic.get(x,x) for x in strs))
>>> print(strs)
thi3 i3 e ma33ega
或强>
>>> strs="this is a message"
>>> dic={'a':'e','e':'a','s':'3'}
>>> new_strs=''
>>> for x in strs:
if x in dic:
new_strs += dic[x]
else:
new_strs += x
>>> print(new_strs)
thi3 i3 e ma33ega
答案 2 :(得分:1)
在这里工作正常。
>>> import codecs
>>> contents = codecs.open('foo.txt', encoding='utf-8').read()
>>> print contents
This is a message.
>>> print contents.replace('s', '3')
Thi3 i3 a me33age.
注意:如果您想让第二个替换工作,您应该在 newcontents 上执行此操作:
newcontents = contents.replace('a','e')
newcontents = newcontents.replace('s', '3')
答案 3 :(得分:1)
这是一个简单的要点,你可以看到并得到一些帮助
x = open("e:/a.txt" )
s=x.read().replace(''a", "xy" )
x.close()
//Now open the file in write mode and write the string with replaced
x=open("e:/a.txt","w")
x.write(s)
x.close
答案 4 :(得分:0)
您也可以使用正则表达式
newcontents = re.sub(r"a","e",contents)
newcontents = re.sub(r"s","3",newcontents)