python-docx之内容读取等

本文介绍如何使用python-docx库来读取Word文档的内容,包括段落、标题和正文,并展示了如何添加新的标题和段落,以及进行格式设置和插入分页符等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建立文档对象

  • 需要使用docx库中的Document方法创建
  • 指明路径。
from docx import Document
docx1 = Document(r"D:\lianxi_01.docx")
docx1
<docx.document.Document at 0x6b3d778>

读取word中的段落

  • 使用paragraphs属性
from docx import Document
docx1 = Document(r"D:\lianxi_01.docx")
paras = docx1.paragraphs
for i_paras in paras:
    print("*****", i_paras.text)
***** 8月14日,是世界“慰安妇”纪念日。
***** 据统计,在1931年到1945年,侵华日军强征20多万中国妇女作为性奴隶,“慰安妇”成了日军强加给她们的称号。
***** 这是一道道伤疤,刻在了她们心里,这更是人类的耻辱,留在了历史上。

读取word中的标题

# 获取标题2
from docx import Document
docx1 = Document(r"D:\lianxi_02.docx")
paras = docx1.paragraphs
for i_paras in paras:
    if i_paras.style.name == "Heading 2":
        print("*****", i_paras.text)
***** 第一个标题1第一个标题2 
***** 第一个标题1第二个标题2 
***** 第一个标题1第三个标题2 
***** 第二个标题1第一个标题2 
***** 第二个标题1第二个标题2 
# 获取所有标题
for i_paras in paras:
    if re.match("^Heading \d+$",  i_paras.style.name):
        #if i_paras.style.name == re.match("^Heading \d+$",  i_paras.style.name):
        print("*****", i_paras.text)   
***** 第一个标题1
***** 第一个标题1第一个标题2 
***** 第一个标题1第二个标题2 
***** 第一个标题1第三个标题2 
***** 第二个标题1
***** 第二个标题1第一个标题2 
***** 第二个标题1第二个标题2 

读取word中的正文

for i_paras in paras:
    if i_paras.style.name == "Normal":
        print("*****", i_paras.text)
***** 第一个标题1第一个标题2 正文1
***** 第一个标题1第一个标题2 正文2
***** 第一个标题1第二个标题2 正文1
***** 第一个标题1第二个标题2 正文2
***** 第一个标题1第二个标题2 正文3
***** 第一个标题1第三个标题2 正文1
***** 第一个标题1第三个标题2 正文2
***** 第一个标题1第三个标题2 正文3
***** 第二个标题1第一个标题2 正文1
***** 第二个标题1第一个标题2 正文1
***** 第二个标题1第二个标题2 正文1

读出所有块

  • 不同的块一般有不同的格式
from docx import Document
docx1 = Document(r"D:\lianxi_03.docx")
for i_paras in docx1.paragraphs:
    runs = i_paras.runs
    for i_runs in runs:
        print("----", i_runs.text)
---- 今年
---- ,南京利济巷慰安所旧址陈列馆工作人员,
---- 在湖南新确认3位日军“慰安妇”制度受害幸存者。

增加标题或段落

add增加

  • add_heading新增标题
  • 使用add_paragraphs新增正文段落
from docx import Document
docx1 = Document(r"D:\lianxi_02.docx")
docx1.add_heading("我是新增的一级标题", level=1)
docx1.add_heading("我是新增的二级标题", level=2)
docx1.add_paragraph("我是新增的正文")
docx1.save("D:\edit_02.docx")

插入段落

  • 使用add_paragraph_before,无after方法
from docx import Document
docx1 = Document(r"D:\lianxi_03.docx")
para = docx1.add_paragraph("我之后添加的文字会被设置格式")
para.add_run("加粗").bold = True
para.add_run("普通")
para.add_run("加粗").italic = True
docx1.save(r"D:\edit_03.docx")

设置格式,自动分块

from docx import Document
docx1 = Document(r"D:\lianxi_03.docx")
para = docx1.paragraphs[0]
para.insert_paragraph_before("这是新增加的段落1")
docx1.save(r"D:\edit_04.docx")

插入分页符

  • 使用add_page_break()方法
### 使用 `python-docx` 库读取 DOCX 文件内容 #### 安装依赖 为了使用 `python-docx`,需要先通过以下命令安装该库: ```bash pip install python-docx ``` 需要注意的是,`python-docx` 只能操作 `.docx` 格式的文件,如果遇到 `.doc` 文件,则需将其转换为 `.docx` 后再进行处理[^1]。 --- #### 基本方法:读取文档中的段落文本 以下是利用 `python-docx` 读取 `.docx` 文件中所有段落的代码示例: ```python from docx import Document def read_docx_paragraphs(file_path): document = Document(file_path) # 打开指定路径下的 .docx 文件 paragraphs_text = [] # 存储段落文本 for paragraph in document.paragraphs: # 遍历文档中的每一个段落对象 paragraphs_text.append(paragraph.text) # 提取段落文字并存储到列表中 return paragraphs_text # 返回包含所有段落文本的列表 ``` 上述函数会返回一个字符串列表,其中每个元素代表文档中的一个段落[^3]。 --- #### 进阶功能:读取表格内容 除了段落外,`.docx` 文件可能还包含表格。可以通过如下方式提取表格内的数据: ```python def read_docx_tables(file_path): document = Document(file_path) tables_data = [] for table in document.tables: # 遍历文档中的所有表格 rows_data = [] for row in table.rows: # 遍历当前表格的每一行 cells_data = [cell.text.strip() for cell in row.cells] # 获取单元格的内容 rows_data.append(cells_data) tables_data.append(rows_data) # 将每张表的数据存入总列表中 return tables_data # 返回嵌套列表形式的表格数据 ``` 此函数能够逐个解析文档中的表格,并将它们转化为二维数组的形式。 --- #### 特殊部分:读取页眉和页脚 对于某些复杂需求,比如获取文档的页眉或页脚信息,可按照下面的方式实现: ```python def read_headers_footers(file_path): document = Document(file_path) headers, footers = [], [] for section in document.sections: # 遍历文档的所有节 (Section) header = section.header # 获得当前节的页眉对象 footer = section.footer # 获得当前节的页脚对象 if header.paragraphs: # 如果存在页眉段落 headers.extend([p.text for p in header.paragraphs]) if footer.paragraphs: # 如果存在页脚段落 footers.extend([p.text for p in footer.paragraphs]) return headers, footers # 返回页眉和页脚的文字内容 ``` 这段代码展示了如何访问不同章节 (`Sections`) 的页眉与页脚,并从中抽取所需的信息[^4]。 --- #### 综合应用实例 假设有一个名为 `example.docx` 的 Word 文档,我们希望一次性打印其所有的段落、表格以及页眉页脚内容: ```python if __name__ == "__main__": file_path = "example.docx" # 输出段落内容 paragraphs = read_docx_paragraphs(file_path) print("Paragraphs:", "\n".join(paragraphs)) # 输出表格内容 tables = read_docx_tables(file_path) print("\nTables:") for idx, table in enumerate(tables, start=1): print(f"Table {idx}:\n{table}") # 输出页眉页脚内容 headers, footers = read_headers_footers(file_path) print("\nHeaders:", headers) print("Footers:", footers) ``` 以上程序综合运用了前面介绍的各种技术来全面分析目标 `.docx` 文件[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值