• win32 python查找文字指定格式 win32com


    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    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

  • 相关阅读:
    更改linux centos 7系统语言
    校园小情书微信小程序源码 | 社区小程序前后端开源 | 校园表白墙交友小程序
    金龙鱼半年报:增收不增利,控本依旧是头等大事
    SpringBoot整合POI实现Excel文件读写操作
    第十五届蓝桥杯物联网试题(国赛)
    springboot版HelloWorld
    SparkSQL系列-7、自定义UDF函数?
    Unity 雷达项目分析(更新ing)
    有没有必要考取PMP?
    Stable Diffusion源码调试(一)
  • 原文地址:https://blog.csdn.net/nongcunqq/article/details/125443865