python对docx文件进行处理,识别docx文件内容是否带有某个词

学校给了我一个任务,有几百个文件,有些是docx格式,有些是doc格式,有些事pdf格式

!!!!!!需要注意的是,这个代码不能处理pdf和doc文件,幸好学校给我的那几百个文件里面,pdf、doc占比不是很大,因此对于这两类文件,我就是一个一个打开找的!!!!!!

任务为:在这几百文件里面找出内容里面含有 “小花” 、 “大树” 、“绿草” 这些字眼的文件

直接上代码,我慢慢解释

from docx import Document
import os


#读取文档
path='C:/Users/lenovo/Desktop/encode'
files= os.listdir(path)

这一步为读取你需要处理的文件的路径,以我的这个任务为例,我那几百个文件在 encode这个文件夹下

for file in files:
    File=file.split('.')
    # 一波小细节,这里面会把slip之后的结果赋给另一个变量 File,和file是不同的,改了名字。
    # 为了之后能继续用flie这个变量

    if 'pdf' in File:
        print(file+' is pdf file')
        continue
    if 'doc' in File:
        print(file + ' is doc file')
        continue
    ex=[]
    doc = Document(path+'/'+file) #filename为word文档

    # 处理段的内容,非表格
    # 有时候docx文件内会有表格的出现,有表格的话,表格里面的内容会由另外的命令来提取出来
    check=['小花','大树','绿草']
    pl = [ paragraph.text for paragraph in doc.paragraphs] 
    for i in pl:
        result=i.strip()
        # strip() 将句子前后的
<think>我们已知用户想使用python-docx库修改Word文档中的表格内容或样式。根据引用内容,我们知道python-docx是一个用于处理.docx文件的库,不支持.doc格式(引用[5])。下面将分步骤介绍如何修改表格内容及样式。 ### 1. 打开文档 首先,需要打开一个现有的Word文档(引用[4]): ```python from docx import Document doc = Document('example.docx') # 打开名为example.docx文档 ``` ### 2. 访问文档中的表格 文档中的所有表格可以通过`doc.tables`属性访问,这是一个列表,按顺序包含文档中的每个表格。 ```python tables = doc.tables # 获取文档中所有表格的列表 ``` ### 3. 修改表格内容 每个表格由行(`rows`)和列(`cells`)组成。可以通过行列索引访问单元格,然后修改其文本内容。 例如,修改第一个表格的第0行第0列的单元格内容: ```python table = tables[0] # 第一个表格 cell = table.cell(0, 0) # 获取第0行第0列的单元格 cell.text = '新的内容' # 修改文本内容 ``` 注意:如果单元格内已有段落,直接设置`cell.text`会覆盖该单元格内所有文本,包括原有格式。若想保留格式,可以操作单元格内的段落(`paragraphs`)和运行(`runs`)对象。 ### 4. 修改表格样式 #### 4.1 设置表格样式 python-docx提供了一些内置的表格样式,可以通过设置表格的`style`属性来应用: ```python table.style = 'LightShading-Accent1' # 应用内置表格样式 ``` #### 4.2 修改单元格样式 可以修改单元格的填充、边框等。例如,设置单元格背景色: ```python from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT from docx.shared import RGBColor, Pt # 设置单元格垂直对齐方式 cell.vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER # 设置背景色(填充) shading = cell._element.get_or_add_tcPr().get_or_add_shd() shading.fill = "FF0000" # 使用RGB的十六进制值,这里是红色 ``` #### 4.3 修改字体样式 要修改单元格内文本的字体样式,需要操作单元格内的段落和运行对象: ```python # 获取单元格的第一个段落(如果没有,则添加一个) paragraph = cell.paragraphs[0] if cell.paragraphs else cell.add_paragraph() # 清除原有内容,添加新的运行(run) for run in paragraph.runs: paragraph._element.remove(run._element) run = paragraph.add_run('新文本') # 设置字体 run.font.name = '微软雅黑' run.font.size = Pt(12) run.font.bold = True run.font.color.rgb = RGBColor(0, 0, 255) # 蓝色 ``` ### 5. 添加行或列 可以向表格中添加行或列: ```python # 在表格末尾添加一行 new_row = table.add_row() # 在表格末尾添加一列(需要遍历每一行添加单元格) for row in table.rows: row.add_cell() ``` ### 6. 保存文档 完成修改后,保存文档: ```python doc.save('modified_example.docx') ``` ### 注意事项 - 修改样式时,部分高级样式可能需要直接操作底层的XML,这比较复杂。 - 单元格内可能有多个段落,需要根据实际情况处理。 §§相关问题§§ 1. 如何读取Word文档中表格的数据? 2. 如何合并或拆分表格中的单元格? 3. 如何设置表格的边框样式?</think>### 如何使用 Python-docx 修改 Word 表格 #### 1. **访问表格对象** ```python from docx import Document doc = Document('example.docx') # 打开文档[^4] # 获取文档中所有表格 tables = doc.tables # 访问第一个表格 first_table = tables[0] ``` #### 2. **修改表格内容** ```python # 修改单元格文本 cell = first_table.cell(0, 0) # 第1行第1列 cell.text = "新标题" # 直接替换内容 # 保留原格式的修改(推荐) paragraph = cell.paragraphs[0] run = paragraph.runs[0] if paragraph.runs else paragraph.add_run() run.text = "带格式文本" run.bold = True ``` #### 3. **修改表格样式** ```python from docx.enum.table import WD_TABLE_ALIGNMENT, WD_ALIGN_VERTICAL from docx.shared import Pt, RGBColor # 表格整体样式 first_table.alignment = WD_TABLE_ALIGNMENT.CENTER # 居中 first_table.style = "Table Grid" # 内置样式 # 单元格样式 cell.vertical_alignment = WD_ALIGN_VERTICAL.CENTER # 垂直居中 ``` #### 4. **行列操作** ```python # 添加行 new_row = first_table.add_row() # 删除行 first_table._element.remove(first_table.rows[1]._element) # 删除第2行 # 合并单元格 first_table.cell(0, 0).merge(first_table.cell(0, 1)) ``` #### 5. **边框和底纹** ```python from docx.oxml.shared import OxmlElement from docx.oxml.ns import qn def set_cell_border(cell, border_size=4, color="FF0000"): """设置单元格边框""" tc = cell._element tcPr = tc.get_or_add_tcPr() for edge in ('top', 'left', 'bottom', 'right'): tag = f'w:{edge}' element = OxmlElement(tag) element.set(qn('w:val'), 'single') element.set(qn('w:sz'), str(border_size*4)) element.set(qn('w:color'), color) tcPr.append(element) set_cell_border(first_table.cell(0,0)) # 应用边框 ``` #### 6. **保存文档** ```python doc.save('modified.docx') # 保存修改 ``` ### 注意事项 1. **索引从0开始**:`cell(row, col)` 的行列参数从0开始计数 2. **格式继承**:直接修改`.text`会清除格式,建议操作`paragraphs`和`runs` 3. **样式限制**:复杂样式需通过XML操作实现(如边框设置)[^5] 4. **表格识别**:嵌套表格需递归处理 > 示例:将文档中第一个表格的首行设为加粗居中 > ```python > header = first_table.row(0) > for cell in header.cells: > for paragraph in cell.paragraphs: > paragraph.alignment = 1 # 居中 > for run in paragraph.runs: > run.bold = True > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值