请教如何对齐

2020-05-19 22:31:31 +08:00
 songdg
a = 'PM2.5' ,b = '地下管道' ,c = '空铁 WIFI'
print(a, '\t\t', 1)
print(b, '\t\t', 2)
print(c, '\t\t', 3)
请教如何让数字对齐
2888 次点击
所在节点    Python
7 条回复
ClericPy
2020-05-19 22:34:16 +08:00
1. 参考字符串的 ljust rjust center 等方法
2. 参考字符串 format 的 < > = 字符串补齐格式
3. 参考第三方库在命令行里打印 table
4. 其他的一般也用不上...
wingor2015
2020-05-20 12:36:13 +08:00
print('{:<13}'.format(a), '\t\t', 1)
print('{:<10}'.format(b), '\t\t', 2)
print('{:<10}'.format(c), '\t\t', 3)
TtTtTtT
2020-05-20 13:57:33 +08:00
=。=命令行的话,难。

首先,需要一个能对齐的字体。。因为数字、字母和中文文字都不是等宽的。

如果找得到等宽的话,把所有字符映射成显示长度,取最大,然后不满足长度的补足即可。
当然啦,这也很复杂,因为要是覆盖边缘 case 的话,就要对控制字符之类的逻辑进行特殊处理。

我刚才顺手看了眼 VS code 的实现,估计就是把中文文字当 2,其他当 1,因为半个省略号竟然长度算 1 。。
songdg
2020-05-23 12:32:31 +08:00
@wingor2015 谢谢,不过不太行。
songdg
2020-05-23 12:33:15 +08:00
@ClericPy 都试过了,感觉都不怎么齐。
songdg
2020-05-23 12:33:30 +08:00
@TtTtTtT 还是放弃算了。
ClericPy
2020-05-23 13:50:55 +08:00
@songdg #5 不齐的原因可能你不是等宽字体?

对齐的话, 直接用在终端里打印 table 的库算了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/673388

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX