使用Python通过Telegram API发送文本时空格显示异常求助
解决Telegram API发送文本空格对齐异常的问题
问题原因
终端用的是等宽字体,每个字符(包括空格)宽度完全一致,所以你用{name:<20}生成的左对齐文本能正常对齐;但Telegram默认采用比例字体,不同字符宽度不同,普通空格(包括U+00A0非断空格)的宽度会被压缩,导致排版错乱。
解决方案
方案1:使用Telegram等宽代码块格式
把生成的文本包裹在代码块标记```中,Telegram会自动用等宽字体渲染,完美复刻终端的对齐效果:
text = "```\n" for name, price in prices: text += f"{name:<20} {price}\n" text += "```" # 调用Telegram API发送这个text即可
方案2:用固定宽度空格替代普通空格
使用U+2007(图空格,宽度与数字、字母一致)替换普通空格,即使是比例字体也能保证对齐:
text = "" for name, price in prices: # 先按终端格式生成行 line = f"{name:<20} {price}\n" # 把所有普通空格替换为固定宽度的图空格 line = line.replace(' ', '\u2007') text += line
内容的提问来源于stack exchange,提问作者Mahdiyar Zerehpoush
相关产品推荐
相关产品推荐

