提取word文档中的字符

最近需要处理各种格式的文档提取字符,有关于word提取字符串记录一下遇到的问题,这里需要用到两个库:

  1. docx , 在终端按照下面的命令装就行了
!pip install python-docx
  1. win32com, 在终端按照下面的命令装就行了
!pip install win32com

docx可以直接处理docx文件,但是对于doc格式的文件需要转换一下,转换代码如下,其中fn是文件绝对路径,一定要绝对路径要不然word软件是没法存的 , 其次需要注意的是由于我电脑只装了wps,所以在下面的clinet.启动的是kwps.Application 如果你装了word 就启动word。

import docx
from win32com import client

def doc2docx(fn):
    word = client.DispatchEx('kwps.Application')  # 打开word应用程序
    doc = word.Documents.Open(fn)  # 打开word文件

    a = os.path.split(fn)  # 分离路径和文件
    b = os.path.splitext(a[-1])[0]  # 拿到文件名
    docx_path = "{}\\{}.docx".format(a[0], b)

    doc.SaveAs(docx_path, 12)  # 另存为后缀为".docx"的文件,其中参数12或16指docx文件
    doc.Close()  # 关闭原来word文件
    word.Quit()
    return docx_path

最后就利用docx直接提取里面的文字就行了,但是如果是图片格式的话,需要利用OCR,感兴趣的可以留言,可以后期发

def extract_text_from_docx(docx_path):
    doc = docx.Document(docx_path)
    text = ""
    for paragraph in doc.paragraphs:
        text += paragraph.text + "\n"

    return text , os.path.splitext(os.path.basename(docx_path))[0] #返回所有文字 , 文件名称
### 使用VBA从Word文档提取特定字符字符串 要从Word文档提取特定字符字符串,可以使用VBA编写一个脚本,遍历文档中的文本内容,并根据指定条件提取目标字符串。以下是一个完整的示例代码,展示如何实现这一功能: ```vba Sub ExtractSpecificString() Dim doc As Document Dim rng As Range Dim targetString As String Dim extractedStrings As String Dim i As Integer ' 设置目标字符串 targetString = "目标字符串" ' 将此处替换为需要提取字符串 ' 初始化变量 extractedStrings = "" i = 1 ' 获取当前文档 Set doc = ActiveDocument Set rng = doc.Content ' 查找目标字符串 With rng.Find .Text = targetString .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False Do While .Execute ' 如果找到目标字符串,则将其添加到结果中 extractedStrings = extractedStrings & "第 " & i & " 次出现: " & rng.Text & vbCrLf i = i + 1 Loop End With ' 输出结果到立即窗口 If extractedStrings <> "" Then Debug.Print "提取到的字符串如下:" & vbCrLf & extractedStrings Else Debug.Print "未找到指定字符串。" End If End Sub ``` #### 代码说明 上述代码的功能是从当前打开的Word文档中查找并提取所有匹配的特定字符串[^5]。以下是代码的关键点: - **`targetString`**:定义需要提取的目标字符串。 - **`rng.Find`**:使用Word对象模型中的`Find`方法查找目标字符串。 - **循环查找**:通过`Do While .Execute`循环,确保能够找到文档中所有的匹配项。 - **输出结果**:将提取到的字符串及其出现次数打印到VBA的“立即窗口”中。 如果需要将提取的结果保存到Excel或其他文件中,可以进一步扩展此代码,例如使用后期绑定的方式创建Excel对象,并将数据写入Excel表中[^4]。 #### 注意事项 - 确保在运行代码前已启用Word的开发工具选项卡。 - 如果目标字符串包含通配符或特殊字符,请调整`.MatchWildcards`和`.Text`属性以适配复杂查询需求[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曼城周杰伦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值