计算 Microsoft Word 文件中的行数,而不考虑自动换行
Count lines from Microsoft Word file regardless of automatic line wrapping
我有一个 .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 中)的屏幕截图以使其更加清晰。
计算文档中所有段落的行数和单词数 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,则应该可以使用相同(和其他)方法。
我有一个 .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 中)的屏幕截图以使其更加清晰。
计算文档中所有段落的行数和单词数 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,则应该可以使用相同(和其他)方法。