win32 python查找文字指定格式 win32com 定位word开始结束 相当于发送快捷键

317 篇文章 3 订阅
151 篇文章 4 订阅
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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值