2013-05-17 47 views
0

我試圖在Python中使用win32com.client來查找和替換,以替換word文檔中的兩個字符串。基本上我的測試文檔有'名字'&'姓',並且由此我創建一個新文檔,用'John'&'Smith'替換這兩個文檔,但只有第一個名字被更改。我是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指定要做多少次替換:one,all或none。我嘗試了替換= 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'不是一個文本文件。 –

相關問題