python操作word替换文字
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}')
总结
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果