问题陈述:从. docx文件中提取章节,包括自动编号。
我尝试python-docx从. docx文件中提取文本,但它不包括自动编号。
from docx import Document
document = Document("wadali.docx")
def iter_items(paragraphs):
for paragraph in document.paragraphs:
if paragraph.style.name.startswith('Agt'):
yield paragraph
if paragraph.style.name.startswith('TOC'):
yield paragraph
if paragraph.style.name.startswith('Heading'):
yield paragraph
if paragraph.style.name.startswith('Title'):
yield paragraph
if paragraph.style.name.startswith('Heading'):
yield paragraph
if paragraph.style.name.startswith('Table Normal'):
yield paragraph
if paragraph.style.name.startswith('List'):
yield paragraph
for item in iter_items(document.paragraphs):
print item.text
2条答案
按热度按时间jecbmhm31#
目前python-docx v0.8似乎还不完全支持编号。你需要做一些黑客。
首先,在演示中,要迭代文档段落,需要编写自己的迭代器。下面是一些函数:
您可以使用它来查找所有文档段落,包括表格单元格中的段落。
例如:
要访问numbering属性,您需要在"protected"成员
paragraph._p.pPr.numPr
(docx.oxml.numbering.CT_NumPr
对象)中进行搜索:请注意,如果
numbering.xml
文件(在docx中)存在,则从该文件中提取此对象。要访问它,您需要像读取包一样读取docx文件。例如:
Office Open XMl文档中提供了更多信息。
6l7fqoea2#
There is a package, docx2python which does this in a lot simpler fashion: pypi.org/project/docx2python/
下面的代码:
产生一个列表,该列表包含内容,包括以良好的可解析方式的项目符号列表。