Python-pptx-在多行打印时句子被拆分

时间:2018-09-20 17:50:28

标签: python python-3.x python-2.7 powerpoint python-pptx

我正在从.pptx打印,但是单个句子从某处之间被分隔成新行。..这是幻灯片的屏幕截图。 enter image description here

阅读下面的代码时.. 从pptx导入演示文稿

prs = Presentation(path_to_presentation)
for slide in prs.slides:
      for shape in slide.shapes:
            if not shape.has_text_frame:
                continue
            for paragraph in shape.text_frame.paragraphs:
                for run in paragraph.runs:
                    print(run.text)

获得如下所示的输出...

Books include:
Learning Python 
by Mark Lutz
Python Essential Reference 
by David Beazley
Python Cookbook
, ed. by Martelli, Ravenscroft and Ascher
(online at http://code.activestate.com/recipes/langs/python/)
http://wiki.python.org/moin/PythonBooks

您可以比较来自pptx的屏幕截图和来自pptx的打印文本,项目符号要点分成两个或多个句子。就像“学习Python by Mark Lutz”分两点打印“ Learning Python”和“ by Mark Lutz” ”,甚至子弹也被错过了。

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

简短答案是使用paragraph.text而不是run.text

for paragraph in shape.text_frame.paragraphs:
    print(paragraph.text)

段落是连贯的文本块,在页边空白之间流动而没有竖线。这是 user 的区别,因为它会影响我们阅读内容的方式。运行是一系列字符,它们具有相同的字符格式(即字体,但包括粗体,斜体等)。跑步是技术的区别,因为它们的界限对读者而言应该不明显;它们只是用来告诉PowerPoint“将此字符格式应用于所有这些字符”。

如果分别打印每次运行,它们将在段落中看似随机的位置处中断,这至少取决于斜体的打开和关闭位置,而且还经常在其他位置(例如有人编辑添加一些字符的位置)处中断。即使两个连续的运行具有相同的格式,PowerPoint也不一定会最小化运行次数。因此,它们倾向于扩散。