alist = [[1, '清华大学', '北京市'], [7, '中国科学科技大学', '安徽省']]
templet = '{0:<10}\t{1:<10}\t{2:<10}'
ults = alist
print(templet.format('排名', '学校名称', '省市'))
for ult in ults:
print(templet.format(ult[0], ult[1], ult[2], chr(12288)))
代码如上,这是我目前找到的最简便的输出中文的代码,但我发现一个神奇的现象:一旦中文的字数超过七个,就会出现无论你规定的长度是多少,输出的格式总是不会对齐。 希望能得到大佬的解答。 还有 Python 的版本是 3.5 的,还用 anoconda 里的 Python3.6 试了下,结果不变。 附上输出结果:
排名 学校名称 省市
1 清华大学 北京市
7 中国科学科技大学 安徽省
1
kokutou 2017-12-29 23:44:17 +08:00 via Android
\t 是这样的。。。。
一定要对齐,我能想到的方法是自己补空格。。。 |
3
billgreen1 2017-12-30 00:02:28 +08:00
额,明明 template 你设定了 3 个元素,为什么要 format4 个呢?
|
4
builg OP @billgreen1 采用中文字符的空格代替英文空格填充 ,chr ( 12288 )表示中文空格
|
5
hsuan 2017-12-30 00:07:55 +08:00 via Android
有个 Unicode 字符对齐的库,忘了叫啥了,挺好用的
|
6
billgreen1 2017-12-30 00:14:31 +08:00
@builg 那你也应该用 4 个,还有要把 templete 中间的\t 的数值设置的大一些,至少 12
|
8
dd0754 2017-12-30 00:38:04 +08:00
```py
alist = [[1, '清华大学', '北京市'], [222, '中国科学', '安徽省'], [11, '中国科技大学', '安徽省'], [ 33, '科学科技大学', '安徽'], [7, '中国科学科技', '安省'], [1234, '大学', 'xx']] templet = '{0:<5}\t{1:<10}\t{2:<10}' ults = sorted(alist, key=lambda a: a[0]) print(templet.format('排名', '学校名称'.ljust(10, ' '), '省市'.ljust(10, ' '))) for ult in ults: print(templet.format(ult[0], ult[1].ljust( 10, ' '), ult[2].ljust(10, ' '))) ``` |
9
dd0754 2017-12-30 00:40:08 +08:00 1
```python
alist = [[1, '清华大学', '北京市'], [222, '中国科学', '安徽省'], [11, '中国科技大学', '安徽省'], [ 33, '科学科技大学', '安徽'], [7, '中国科学科技', '安省'], [1234, '大学', 'xx']] templet = '{0:<5}\t{1:<10}\t{2:<10}' ults = sorted(alist, key=lambda a: a[0]) print(templet.format('排名', '学校名称'.ljust(10, ' '), '省市'.ljust(10, ' '))) for ult in ults: print(templet.format(ult[0], ult[1].ljust( 10, ' '), ult[2].ljust(10, ' '))) ``` |