我正在使用 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 行为,其中键入回车会创建一个新段落。
添加回答
举报
0/150
提交
取消