无论自动换行,都从Microsoft Word文件中计算行数

时间:2018-02-05 15:52:40

标签: python ms-word text-processing data-science python-docx

我的.docx Microsoft Word文件格式大致如下:

TAG    Lorem ipsum dolor sit amet, consectetur adipiscing 
       elit, sed do eiusmod tempor
TAG_2  Lorem ipsum dolor sit amet, consectetur adipiscing 
       elit, sed do eiusmod tempor incididunt ut labore 
       et dolore magna aliqua. Ut enim ad minim veniam, 
       quis nostrud exercitation ullamco laboris nisi 
TAG    Text text text text text text text text text text

通过自动包装长行来实现缩进(如果在简单的txt编辑器中复制粘贴,上面的文本将导致3行而不是7行)。

我的任务是自动计算分配给标签的行数,s.t。上面的文件会导致类似:

TAG    2
TAG_2  4
TAG    1

现在我手动执行,通过指定字体文件,字体大小和平均行长度,并划分一行的长度(用PIL.ImageFont.getsize()测量),但这种方法确实容易出错,并且不涵盖所有可能的情况(如改变文件中间的字体) 不幸的是我无法控制文件,因此在计算行数之前我无法正确格式化(因为需要)。

有没有办法在Python中执行此操作?我找到了python-docx package,但它的能力似乎有点受限。

另请注意,.docx格式不是必需的,我还可以在必要时将文件转换为.odt。

附上我的设置(在LibreOffice中)的屏幕截图,使其更清晰。

enter image description here

1 个答案:

答案 0 :(得分:1)

计算行数&带有VBA的文档中所有段落中的单词:

Sub ParaStatsCount()
Dim Para As Paragraph
For Each Para In ActiveDocument.Paragraphs
  With Para.Range
    MsgBox .Text & vbCr & "Line Count = " & .ComputeStatistics(wdStatisticLines) & vbCr _
      & "Word Count = " & .ComputeStatistics(wdStatisticWords)
  End With
Next
End Sub

如果您可以使用Python自动化Word,则应该可以使用相同的(和其他)方法。