2013-05-17 5 views
0

Я пытаюсь использовать find и заменить на win32com.client в Python, чтобы заменить 2 строки в текстовом документе. basiclaly В моем тестовом документе есть «Имя» & «Фамилия», и из этого я создаю новый документ, который заменяет их «Джон» & «Смит», но только первое имя изменяется. Я новичок в python, поэтому я уверен, что это нечто очевидное, я делаю неправильно. Я был на этом некоторое время, поэтому любая помощь будет очень признательна.Передача нескольких значений функции

import win32com.client 

word = win32com.client.DispatchEx("Word.Application") 
word.Visible = True 
word.DisplayAlerts = 0 
word.Documents.Open("C:\TEMP\Test.docx") 

def replace(find_str, replace_str): 
    find = word.Selection.Find 
    find.Text = find_str 
    find.Replacement.Text = replace_str 
    find.Execute(Replace=1, Forward=True) 

replace('First Name', 'John') 

replace('Last Name', 'Smith') 

word.ActiveDocument.SaveAs('C:\TEMP\Test2.docx') 
word.Quit()  
+0

это может быть, что Заменить = 1 заменить только первое вхождение? – oleg

+0

msdn утверждает, что replace указывает, сколько изменений должно быть выполнено: один, все или ни один. Я попробовал Replace = 2, и это сделало трюк. Благодаря!! – KFP

ответ

0

Так что с помощью

find.Execute(Replace=2, Forward=True) 
0

вы можете

o = open("C:\TEMP\Test.docx","a") #open for append 
for line in open("file"): 
    line = line.replace("someword","newword") # set your own names here 
    o.write(line + "\n") 
o.close() 

поэтому нет необходимости переопределить метод replace.

+0

'.docx' не является текстовым файлом. –

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