Python 和 PowerPoint 将 '<br><br>' 替换为 '_x000D_'

我正在使用 Python pptx 创建一个 PowerPoint,我的查询结果字符串包含 html ' <br><br>' 并且我试图用 '\n' 替换它,例如:


TDsFirst = "\n" + self.TxtStringFromSQLserver.replace('<br><br>', '\n')

TDPs = TDPsFirst.replace('<br>', '\n')

TipDPsText_run.text = TDPs

这导致以 ' _x000D_'结尾的行


我究竟做错了什么?如何将“ <br>”转换为退货?


小唯快跑啊
浏览 240回答 1
1回答

心有法竹

这种行为有点新,但是是预期的行为:https ://python-pptx.readthedocs.io/en/latest/api/text.html#pptx.text.text._Run.text运行只能包含文本。换行或段落边界发生在更高级别。特别是,换行只能发生在段落之间的运行之间。段落“中断”只能出现在文本框架中,在段落之间。因此,根据您要执行的操作,解决方案可能只是在文本框架级别进行分配,而不是变量名称TipDPsText_run所暗示的运行级别。换行符 (&nbsp;\n) 被接受TextFrame.text并转换为段落边界。这可能不能完全解决问题,但它可能(我给它 90% 的可能性)并且至少会将问题改变为可以解决的问题。更新:在进一步审查代码之后,实际上换行符本身"\x0A"被接受Run.text并未更改地放置到 XML 中,它可能看起来很像换行符。这种传统的礼貌并没有扩展到回车"\x0D",就像您看到的那样呈现为"_x000D_".&nbsp;这个额外的 CR 字节在那里,因为您在 Windows 上运行。因此,您可以通过在文本分配中使用"\x0A"而不是解决此问题。"\n"但我建议使用文本框架级别分配,因为这种方法更符合 PowerPoint 行为,其中键入回车会创建一个新段落。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python