python操作word替换文字

输入正则式,找到想要被替换掉的文本

匹配到的文本中,哪些片段需要保留,把这些片段做成捕获组

将捕获组按照左右顺序进行编号

便携替换后的文本格式,其中可以用\编号代表需要保留的文本片段

在pycharm中,使用re模块进行文字的替换

  • 首先导入re模块

  • 使用re的sub方法

  • 第二个参数就是要替换的文字,这里字符串前面要加个 r,防止转义,要不然会乱码

s = '''驻阿尔及利亚大使馆 +21-3-77098028
驻埃及大使馆 +20-2-27363556
驻亚历山大总领馆 +20-12-74571836
胜埃塞俄比亚大使馆 +251-911-686415
驻安哥拉大使馆 +244-92-7769854
驻贝宁大使馆 +229-96-04907
驻博茨瓦纳大使馆+267-71-315056'''

import re

a = re.sub(r'\+(\d+)\-(\d+)', r'国家号:\1,国内号码:\2', s)

print(a)

驻阿尔及利亚大使馆 国家号:21,国内号码:3-77098028
驻埃及大使馆 国家号:20,国内号码:2-27363556
驻亚历山大总领馆 国家号:20,国内号码:12-74571836
胜埃塞俄比亚大使馆 国家号:251,国内号码:911-686415
驻安哥拉大使馆 国家号:244,国内号码:92-7769854
驻贝宁大使馆 国家号:229,国内号码:96-04907
驻博茨瓦纳大使馆国家号:267,国内号码:71-315056

正题,在word中实现替换

使用的插件

python-docx,只能读写docx格式的word文档,即office 2007 之后的文件格式

整个word文件使用docx.Document来表示

文档中的段落使用doxc.Paragraph来表示

第一段用doxc.Paragraph[1]来表示

第一段的文字用doxc.Paragraph[1].text来表示

修改word文档内容

打开demo1.docx文件,并作为一个Document对象返回给doc变量

用doc.paragraphs[n]把第n段作为一个.paragraphs对象返回给p变量,用p.text得到字符串,即这一段的文本赋值给p.text,就会修改该段文本内容

调用doc.save、按照指定名称保存该文档

import docx

doc_path = '/Users/maczhao/Desktop/pythontest/pythonProject1/正则替换word文字/words/demo1.docx'

doc = docx.Document(doc_path)

p = doc.paragraphs[0]

p.text = 'hahahah'
print(p.text)
doc.save('/Users/maczhao/Desktop/pythontest/pythonProject1/正则替换word文字/words/demo1.docx')

修改每段文字内容

import docx

doc_path = '/Users/maczhao/Desktop/pythontest/pythonProject1/正则替换word文字/words/demo1.docx'

doc = docx.Document(doc_path)

for p in doc.paragraphs:
    p.text = p.text + '作者:二狗子'
print(p.text)
doc.save('/Users/maczhao/Desktop/pythontest/pythonProject1/正则替换word文字/words/demo1.docx')

使用正则修改单个word文档内容

import docx
import re
doc_path = '/Users/maczhao/Desktop/pythontest/pythonProject1/正则替换word文字/words/南美洲.docx'

doc = docx.Document(doc_path)

for p in doc.paragraphs:
    p.text = re.sub(r'\+(\d+)\-(\d+)', r'国家号:\1,国内号码:\2', p.text)
print(p.text)
doc.save('/Users/maczhao/Desktop/pythontest/pythonProject1/正则替换word文字/words/南美洲new.docx')

使用正则修改文件夹下所有word文档内容

用到的库docx,os,re

import docx
import re
import os

root = '/Users/maczhao/Desktop/pythontest/pythonProject1/正则替换word文字/words'
file_names = os.listdir(root)  #获取当前文件夹下所有的文件名
print(file_names)
for file_name in file_names:
    doc = docx.Document(f'{root}/{file_name}')
    print('doc',doc)
    for p in doc.paragraphs:
        p.text = re.sub(r'\+(\d+)\-(\d+)', f'国家号:\1,国内号码:\2', p.text)
    doc.save(f'{root}/{file_name}')

总结