2024-04-25 16:37:25 发布
网友
{\n正在创建一个类似于Python的字符串,并尝试将其替换为'ppm>'
TDsFirst = "\n" + self.TxtStringFromSQLserver.replace('<br><br>', '\n') TDPs = TDPsFirst.replace('<br>', '\n') TipDPsText_run.text = TDPs
这将导致以“_x000D_”结尾的行
_x000D_
我做错什么了?如何将'<br>'转换为返回值?在
<br>
此行为有点新,但它是预期的行为:https://python-pptx.readthedocs.io/en/latest/api/text.html#pptx.text.text._Run.text
运行只能包含文本。换行或段落边界发生在更高的级别。尤其是,换行只能在段落内的两行之间发生。段落“中断”只能出现在文本框中,在段落之间。在
因此,取决于您要做什么,解决方案可能只是在文本帧级别而不是像您的变量名TipDPsText_run建议的运行级别进行赋值。换行符(\n)被TextFrame.text接受并转换为段落边界。在
TipDPsText_run
\n
TextFrame.text
这也许不能完全解决问题,但它可能(我给它90%的可能性),并且至少会把问题变成一个可以解决的问题。在
更新:在进一步检查代码之后,实际上,"\x0A"本身就被Run.text接受,并被原封不动地放在XML中,它看起来很像是一个换行符。这个遗留的礼节并没有扩展到回车符"\x0D",其呈现方式与您看到的"_x000D_"一样。这个额外的CR字节在那里是因为你在Windows上运行。因此,您可以通过在文本赋值中使用"\x0A"而不是{}来解决这个问题。但我建议文本框架级别的赋值方式更符合PowerPoint的行为,即输入回车符可以创建一个新段落。在
"\x0A"
Run.text
"\x0D"
"_x000D_"
此行为有点新,但它是预期的行为:
https://python-pptx.readthedocs.io/en/latest/api/text.html#pptx.text.text._Run.text
运行只能包含文本。换行或段落边界发生在更高的级别。尤其是,换行只能在段落内的两行之间发生。段落“中断”只能出现在文本框中,在段落之间。在
因此,取决于您要做什么,解决方案可能只是在文本帧级别而不是像您的变量名
TipDPsText_run
建议的运行级别进行赋值。换行符(\n
)被TextFrame.text
接受并转换为段落边界。在这也许不能完全解决问题,但它可能(我给它90%的可能性),并且至少会把问题变成一个可以解决的问题。在
更新:在进一步检查代码之后,实际上,}来解决这个问题。但我建议文本框架级别的赋值方式更符合PowerPoint的行为,即输入回车符可以创建一个新段落。在
"\x0A"
本身就被Run.text
接受,并被原封不动地放在XML中,它看起来很像是一个换行符。这个遗留的礼节并没有扩展到回车符"\x0D"
,其呈现方式与您看到的"_x000D_"
一样。这个额外的CR字节在那里是因为你在Windows上运行。因此,您可以通过在文本赋值中使用"\x0A"
而不是{相关问题 更多 >
编程相关推荐