用Python解析docx文件

时间:2018-05-24 10:07:28

标签: python regex python-docx

我正在尝试从多个docx文件中读取标题。令人讨厌的是,这些标题没有可识别的段落样式。所有段落都有'正常'段落样式,所以我使用正则表达式。标题格式为粗体,结构如下:

:一种。猫

B中。狗

℃。猪

d。福克斯

如果文件中有超过26个标题,则标题前面会有“AA。”,“BB”等。

我有以下代码,除了前面带有'D.'的任何标题之外,哪种作品打印两次,例如 [猫,狗,猪,福克斯,福克斯]

EmployeeCrud

有人能告诉我代码是否有问题导致这种情况发生?据我所知,Word文件中这些特定标题的格式或结构没有什么独特之处。

1 个答案:

答案 0 :(得分:1)

正在发生的事情是循环继续经过D.Fox,所以在这个新循环中,即使没有匹配,它也会打印head1的最后一个值,即D.Fox。< / p>

我认为for run in paragraph.runs:以某种方式运行两次,也许是第二次&#34;运行&#34;那是不可见的?

也许在找到第一个匹配时添加中断足以阻止第二次运行触发?

for file in os.listdir(directory):

document = Document(directory+file)

head1s = []

for paragraph in document.paragraphs:

    heading = re.match(r'^[A-Z]+[.]\s', paragraph.text)

    for run in paragraph.runs:

        if run.bold:

            if heading:
                head1 = paragraph.text
                head1 = head1.split('.')[1]
                head1s.append(head1)
                # this break stops the run loop if a match was found.
                break

print(head1s)