![](/img/trans.png)
[英]How can I extract index marker data from a docx document using python-docx?
[英]How to extract heading numbers from a document using python-docx?
我尝试了类似的方法,但用于多语言。
首先你必须观察标题(1, 2, 3 ..)和副标题(2.1, 2.2 ..)并尝试提取一些常见的东西。 他们可能有以下一些独特的模式:
观察这些事情并尝试构建模式。 通过使用正则表达式,我们可以提取所需的。
这是正则表达式,它将满足您的情况。 即使是多语言。
headings = regex.search("\d+\.\t(\p{Lu}+([\s]+)?)+")
subHeadings =regex.search("\d+\.\d+\t\p{Lu}(\p{Ll}+)+")
python regex ( re ) 不向后兼容。 所以使用这个 [regex][1] 尤其是如果你的文本是多语言的。
import regex
from docx import Document
doc = Document("<<Your doc file name here>>")
# Iterate through paragraphs ( in a word everything is a paragraph)
# Even the blank lines are paragraphs
for index, para in enumerate(doc.paragraphs):
# Skipping the blank paragraphs
if(para.text):
headings = regex.search("\d+\.\t(\p{Lu}+([\s]+)?)+",para.text,regex.UNICODE)
subHeadings = regex.search("\d+\.\d+\t\p{Lu}(\p{Ll}+)+",para.text,regex.UNICODE)
if headings:
if para.runs:
for run in para.runs:
# At run level checking for bold or italic.
if run.bold:
print("Bold Heading :",headings.group(0))
if run.italic:
print("Italic Heading :",headings.group(0))
if subHeadings :
if para.runs:
for run in para.runs:
# At run level checking for bold or italic.
if run.bold:
print("Bold subHeadings :",subHeadings .group(0))
if run.italic:
print("Italic subHeadings :",subHeadings .group(0))
注意:粗体或斜体在运行级别并不总是存在。 如果你没有得到这些参数,你应该检查 style 和 para level。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.