2013-05-15 2 views
0

У меня есть список целых чисел, который выглядит как:Поиск и замена в текстовом файле

я = [1020 1022 ....]

Мне нужно открыть файл XML, который хранится в формате .txt , где каждая запись включает в себя

Settings="Keys1029"/> 

мне нужно перебирать записи сменяющих друг номера в «Keys1029» с записью списка. так что вместо того, чтобы:

....Settings="Keys1029"/> 
....Settings="Keys1029"/> 

Мы имеем:

....Settings="Keys1020"/> 
....Settings="Keys1022"/> 

До сих пор у меня есть:

out = [1020 1022 .... ] 
text = open('c:\xml1.txt','r') 

for item in out: 
    text.replace('1029', item) 

, но я получаю:

text.replace('1029', item) 
AttributeError: 'file' object has no attribute 'replace' 

Может кто-то посоветуйте мне, как это исправить?

Спасибо,

Билл

ответ

3

open() возвращает объект файла, который вы не можете использовать строковые операции на нем, вы, чтобы использовать либо readlines() или read(), чтобы получить текст из объекта файла.

import os 
out = [1020,1022] 
with open('c:\xml1.txt') as f1,open('c:\somefile.txt',"w") as f2: 
    #somefile.txt is temporary file 
    text = f1.read() 
    for item in out: 
     text = text.replace("1029",str(item),1) 
    f2.write(text) 
#rename that temporary file to real file 
os.rename('c:\somefile.txt','c:\xml1.txt') 
+1

Не будет 'текст = text.replace («1029», ул (пункт))' заменить * все * вхождения '1029', и, следовательно, не будет делать ничего вообще для остальных чисел в список «out»? –

+0

@WesleyBaugh хорошая точка, исправлена. –

+0

Спасибо Уэсли - – user61629

Смежные вопросы