为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

小唯快跑啊 2022-03-09 20:46:22
我正在使用 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>”转换为退货?
查看完整描述

1 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

这种行为有点新,但是是预期的行为:
https ://python-pptx.readthedocs.io/en/latest/api/text.html#pptx.text.text._Run.text

运行只能包含文本。换行或段落边界发生在更高级别。特别是,换行只能发生在段落之间的运行之间。段落“中断”只能出现在文本框架中,在段落之间。

因此,根据您要执行的操作,解决方案可能只是在文本框架级别进行分配,而不是变量名称TipDPsText_run所暗示的运行级别。换行符 ( \n) 被接受TextFrame.text并转换为段落边界。

这可能不能完全解决问题,但它可能(我给它 90% 的可能性)并且至少会将问题改变为可以解决的问题。

更新:在进一步审查代码之后,实际上换行符本身"\x0A"被接受Run.text并未更改地放置到 XML 中,它可能看起来很像换行符。这种传统的礼貌并没有扩展到回车"\x0D",就像您看到的那样呈现为"_x000D_". 这个额外的 CR 字节在那里,因为您在 Windows 上运行。因此,您可以通过在文本分配中使用"\x0A"而不是解决此问题。"\n"但我建议使用文本框架级别分配,因为这种方法更符合 PowerPoint 行为,其中键入回车会创建一个新段落。


查看完整回答
反对 回复 2022-03-09
  • 1 回答
  • 0 关注
  • 239 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信