Python 替换文件中的单词

Python 替换文件中的单词,python,Python,它确实有效,但不能代替字母。 首先,我打开一个文件,然后将内容写入另一个文件。然后在第二个文件中,我替换了一些特定的字母,但它不起作用,一个 有什么想法吗? 守则: def copy_file(): f=open("cartas.txt","r") g=open("copiar.txt","r+") g.writelines(f) f.close() for line in g: line = line.replace("s","ch"

它确实有效,但不能代替字母。 首先,我打开一个文件,然后将内容写入另一个文件。然后在第二个文件中,我替换了一些特定的字母,但它不起作用,一个 有什么想法吗? 守则:

def  copy_file():

    f=open("cartas.txt","r")
    g=open("copiar.txt","r+")
    g.writelines(f)
    f.close()

    for line in g:
       line = line.replace("s","ch")
       g.write(line) 
    g.close()

copy_file()

调用
g.writelines(f)
后,
g
的读取指针位于文件的末尾,因此g:中的行的
之后无需迭代。

此Python示例将执行您需要的替换,因为替换是全局的,您不需要逐行替换:

f = open("cartas.txt","r")
g = open("copiar.txt","w")
g.write(f.read().replace('s','ch'))
g.close()
f.close()

您正在尝试迭代
g
中的行,并将修改后的行写入
g
。在此之前,您实际上将内容从
f
复制到
g

您应该做的是迭代
f
的行,并将它们写入
g
,同时直接转换它们:

f = open('cartas.txt', 'r')
g = open('copiar.txt', 'r+')

for line in f:
    line = line.replace('s', 'ch')
    g.write(line)

f.close()
g.close()

你为什么不做一个全局替换,然后写下整个东西。。。没有必要排队line@JoranBeasley这篇文章暗示她想“替换一些特定的字母”。这意味着她可能希望每行替换一个以上的图案。@JoranBeasley有两个原因:第一,实际的替换可能更复杂,并且取决于行数,第二,不要一次将所有内容放入内存。