import os from docx import Document from docx.shared import Pt
defget_filelist(path): file_list = [] for home, dirs, files in os.walk(path): for filename in files: if(filename.startswith('~$')): continue else: # 文件名列表,包含完整路径 file_list.append(os.path.join(home, filename)) # 文件名列表,只包含文件名 # file_list.append(filename) return file_list
# 替换Word文档中的指定字符串 defreplace_str_in_word(old_str, new_str, docx_file_list): for file in docx_file_list: doc = Document(file) # 每一段内容 for p in doc.paragraphs: if old_str in p.text: # inline = p.runs # for i in inline: # if old_str in i.text: # text = i.text.replace(old_str, new_str) # i.text = text p.text = p.text.replace(old_str, new_str) # 替换字符 # 设置替换后的段落的格式 for i in p.runs: i.font.size = Pt(18) # 小二 i.font.bold = True# 加粗 # i.font.name = 'Arial' i.font.name = u'宋体'
doc = Document(file) for p in doc.paragraphs: # 读取每一段内容,p是paragraph对象 if old_str in p.text: # 当旧的字符串'2021'存在这个段落内容中 p.text = p.text.replace(old_str, new_str) # 把这一段的内容设置成替换后的字符串
# 1).关于我注释的这一段是什么情况 # 下面这一段是按块来查询的,但是主要分块感觉很玄学,比如我的'2021'就拆成了'20'、'2'、'1'这样3个run(文字块)。 # 所以,如果能用文字块直接替换的话也可以这样子做的。 # inline = p.runs # for i in inline: # if old_str in i.text: # text = i.text.replace(old_str, new_str) # i.text = text