程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

win32 python查找文字指定格式 win32com 定位word開始結束 相當於發送快捷鍵

編輯:Python
from win32com.client import Dispatch
word_path = r'D:\KKCap\1.docx'
app = Dispatch("Word.Application")
doc = app.Documents.Open(word_path)
app.Visible = 1
app.DisplayAlerts = 0
s = app.Selection
# 查找Aaaa 第一個出現的位置
s.Find.Execute('Aaaa')
# 設置為一級標題
s.Style = -2
print(s.Style)

Styles的返回參數,標題1、標題2、標題3分別為-2、-3、-4,頁眉為-32,標題為-63,其他見Styles文檔

使用s.Find.Execeute方法時,如果用到任意一個位置的參數,就必須要寫上前面的所有的參數,哪怕是注明參數也不行。下面分4種情況說明

1.查找15

s.Find.Execute(‘15’)

等同於

s.Find.Execute(FindText=‘15’)

這個只有一個參數,不存在省略參數的問題

2.使用正則查找1915或者2015這樣的字符串(從當前位置查找到結尾)

s.Find.Execute(“??15”, False, False, True)

查找2015或者1915這樣的字符串,? 代表任意一個字符

等同於s.Find.Execute(

FindText=“??15”, MatchCase=False,

MatchWholeWord=False, MatchWildcards=True

)

不能省略其他參數為

s.Find.Execute(FindText=“??15”, MatchWildcards=True)

也就是按照順序,你用到了第4個參數,那麼第1, 2, 3個參數都不能省略

3.比上一條增加了循環查找功能

s.Find.Execute(“??15”, False, False, True, False, False, True, 1)

查找2015或者1915這樣的字符串,?代表任意一個字符

等同於s.Find.Execute(

FindText=“??15”, MatchCase=False,

MatchWholeWord=False, MatchWildcards=True,

MatchSoundsLike=False, MatchAllWordForms=False,

Forward=True, Wrap=1

)

Wrap不能使用True,只能使用1,這是因為這個參數在COM中為枚舉類型,具體可查看文檔

不能省略其他參數為

s.Find.Execute(FindText=“??15”, MatchWildcards=True, Forward=True, Wrap=1)
4.把15換成16

替換必須用到第11個參數,那麼1到10的參數都要寫上。

s.Find.Execute(“15”, False, False, False, False, False, True, 1, False, “16”, 2)

不能省略其他參數為

s.Find.Execute(FindText=“15”, ReplaceWith=“16”, Replace=2)
只所以不能省略參數的原因,可能是因為需要把python的參數數值,跨語言轉換到C++的COM類型,溝通復雜導致的。

具體正則的語法,可以查看文末的參考文章,下面僅列出部分語法

  • 代表任意多個字符
    [x-x] 指定范圍內的任意單個字符,如[a-c]pple代表apple, bpple, cpple。
    ^# 任意單數字,等於[0-9];
    ^$ 任意單字母,等於[a-zA-Z];
    {n} 前一字符的個數為n
    {m, n} 前一字符的個數最少為m,最多為n

參考
https://zhuanlan.zhihu.com/p/67543981

極重要
https://www.xin3721.com/Python/python21722.html


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved