Python和PowerPoint将“<br><br>”替换为“x000D”

2024-04-25 16:37:25 发布

您现在位置:Python中文网/ 问答频道 /正文

{\n正在创建一个类似于Python的字符串,并尝试将其替换为'ppm>'

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

这将导致以“_x000D_”结尾的行

我做错什么了?如何将'<br>'转换为返回值?在


Tags: run字符串textbrself结尾replace返回值
1条回答
网友
1楼 · 发布于 2024-04-25 16:37:25

此行为有点新,但它是预期的行为:
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"而不是{}来解决这个问题。但我建议文本框架级别的赋值方式更符合PowerPoint的行为,即输入回车符可以创建一个新段落。在

相关问题 更多 >