有没有办法使用 python-docx 用 docx 文件中的编号列表替换所有项目符号列表?

时间:2021-04-18 20:35:44

标签: python python-3.x ms-word docx python-docx

我一直在尝试找到一种方法,使用 python-docx 将 docx 文件中的所有项目符号列表更改为数字列表。到目前为止,我已经尝试使用 paragraph.style 属性。做这样的事情:

if paragraph.style.name == 'Bullet List':
    paragraph.style = styles['List Number']

它适用于基本的 docx 文件,但有时,对于更复杂的文档,即使给定的段落在文档中显示为项目符号列表,paragraph.style.name 也会返回类似 'Body Text' 的内容。我只是想知道是否可以使用 python-docx 库来实现这一点,或者我可能需要寻找其他东西。谢谢。

1 个答案:

答案 0 :(得分:0)

简短的回答是否定的。您看到的是使用工具栏按钮应用于段落的项目符号,该按钮将项目符号格式直接应用于段落。在段落级别(最低级别)应用的任何格式都会覆盖从样式继承的格式。

您需要做的是删除手动段落格式(可能通过选择段落并按 Ctrl-Q),如此处和其他网络资源中所述,我敢肯定:{{3} }

删除这些“覆盖”后,样式应该可以自由发挥作用。

没有 python-docx API 对应于“remove-all-formatting”。如果您想以编程方式执行此操作,则需要自己操作 XML。 python-docx 可以让您使用 p = paragraph._p 进入段落元素,然后 print(p.xml) 可以向您展示 XML 的外观,但是从那里您可以自己使用 { 操作该 XML 子树{1}} 次调用。在 lxml 上搜索有关其外观的一些想法。

相关问题