在Python中读取.docx文件以查找删除线,项目符号和其他格式

时间:2017-10-09 12:37:56

标签: python pandoc python-docx

任何人都可以帮助我在Python中使用python-docx识别.docx文件中的段落是否包含使用删除线格式化的文本(即,它出现但是被划掉),或者在开头有一个项目符号点?我正在尝试编写一个脚本来识别文档中的结构并解析内容。

到目前为止,我能够读取.docx文件并迭代段落,识别粗体段落。

from docx import Document
document = Document(r'C:\stuff\Document.docx')
for p in document.paragraphs:
    print p.text
    for run in p.runs:
        if run.bold:
            print 'BOLD ' + run.text

其他人暂时不知道了。

3 个答案:

答案 0 :(得分:0)

使用原生Word DocX解析器,而不是根据Python DocX Docs将其转换为HTML并使用HTML解析器:

from docx.enum.style import WD_STYLE_TYPE
styles = document.styles
paragraph_styles = [
    s for s in styles if s.type == WD_STYLE_TYPE.PARAGRAPH
]
for style in paragraph_styles:
    if style.name = 'List Bullet':
        print "I'm a bullet"

答案 1 :(得分:0)

对于删除线,你可以像这样修改你的例子:

from docx import Document
document = Document(r'C:\stuff\Document.docx')
for p in document.paragraphs:
    for run in p.runs:
        if run.font.strike:
            print "STRIKE: " + run.text

请参阅Font对象的API文档,了解更多有趣的内容。

答案 2 :(得分:-1)

根据mkrieger1的建议 - 我建议使用Pandoc将.docx转换为.html并从那里解析文档。

安装Pandoc与安装python-docx一样,从.docx到.html的转换就像使用Pandoc的魅力一样。在.html中,我正在解析的文档的结构以及所有格式元素都非常清晰,因此很容易使用。