我有一份文件,其中有子弹和数字文字。我想找到单词文档的子弹和数字的总数。
这是word文档的子弹测试
•让我们努力开展一场名声游戏
•在蜡烛变暗之前点亮灯泡
•像没有明天一样跑步
我也在编号,因为我想计算子弹和数字
我尝试过以下代码:
my_file = "Bullet_test.docx"
from docx import Document
document = Document(my_file)
styles = document.styles
阅读子弹
from docx.enum.style import WD_STYLE_TYPE
paragraph_styles = [
s for s in styles if s.type == WD_STYLE_TYPE.PARAGRAPH
]
paragraph_styles
我得到以下输出:
[_ParagraphStyle('Normal') id: 106125072,
_ParagraphStyle('List Paragraph') id: 106126528]
我想找到子弹和编号的总数,它们应该为示例文档提供总共6个。能不能让我知道我做错了什么。
答案 0 :(得分:0)
你做错了是试图通过styles
查找子弹,即使在你的文档中,你没有style
被称为Bullet
或类似的东西。< / p>
如果您想使用style
查找项目符号,则必须将它们定义为样式(通过添加名为“Bullet”的样式)。
以下是我在机器上的操作:
之后我跑了这个:
>>> d = Document(my_file)
>>> d.styles
<docx.styles.styles.Styles object at 0x026B4830>
>>> d.styles['Bullet'] # to check that indeed the style 'Bullet' exists
_ParagraphStyle('Bullet') id: 40587152
>>> for p in d.paragraphs:
... if p.style.name == 'Bullet':
... print '~'
...
瞧,发现了4颗子弹!
~
~
~
~
添加样式可以使用Python直接完成(取自here):
>>> from docx.enum.style import WD_STYLE_TYPE
>>> styles = document.styles
>>> style = styles.add_style('Citation', WD_STYLE_TYPE.PARAGRAPH)
>>> style.name
'Citation'
>>> style.type
PARAGRAPH (1)
然后通过以下方式应用它:
>>> document = Document()
>>> paragraph = document.add_paragraph()
>>> paragraph.style
<docx.styles.style._ParagraphStyle object at <0x11a7c4c50>
>>> paragraph.style.name
'Normal'
>>> paragraph.style = document.styles['Heading 1']
>>> paragraph.style.name
'Heading 1'