计算单词文档

时间:2018-03-12 09:22:05

标签: python python-3.x

我有一份文件,其中有子弹和数字文字。我想找到单词文档的子弹和数字的总数。

这是我尝试的示例文本:

这是word文档的子弹测试

•让我们努力开展一场名声游戏 •在蜡烛变暗之前点亮灯泡
•像没有明天一样跑步

我也在编号,因为我想计算子弹和数字

  1. 这是一个数字
  2. 这是另一个数字
  3. 有这么多数字
  4. 我尝试过以下代码:

    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个。能不能让我知道我做错了什么。

1 个答案:

答案 0 :(得分:0)

你做错了是试图通过styles查找子弹,即使在你的文档中,你没有style被称为Bullet或类似的东西。< / p>

如果您想使用style查找项目符号,则必须将它们定义为样式(通过添加名为“Bullet”的样式)。

以下是我在机器上的操作:

enter image description here

之后我跑了这个:

>>> 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'