2012-06-25 2 views
-1

Он действительно работает, но не заменяет буквы. Сначала я открываю один файл и записываю содержимое в другое. А затем ко второму файлу я заменяю некоторые конкретные буквы, но это не работает, А любая идея? Код:Замена слов в файле

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() 

ответ

1

Вы пытаетесь перебрать строки в 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() 
+0

почему бы вам не только сделать глобальный заменить и написать все это ... есть не нужно идти по строкам –

+0

@JoranBeasley OP неявно говорит, что хочет «заменить некоторые конкретные буквы». Это означает, что она может захотеть заменить более одного шаблона на строку. – heltonbiker

+1

@ JoranBeasley Две причины: во-первых, фактическая замена может быть более сложной и зависящей от строк, а во-вторых, чтобы не помещать весь контент в память сразу. – poke

1

После вызова g.writelines(f), указатель считывания для g находится в конце файла, так что for line in g: впоследствии не имеет ничего перебирать.

0

Этого Python пример выполнит замену вам нужно, потому что заменить глобален вам не нужно заменить построчно:

f = open("cartas.txt","r") 
g = open("copiar.txt","w") 
g.write(f.read().replace('s','ch')) 
g.close() 
f.close() 
Смежные вопросы