Pycharm 中制表符输出无法对齐,这个怎么解决啊? - V2EX
首页
注册
登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请
登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI
- Python Package Index
http://diveintopython.org/toc/index.html
span class="chevron">
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
V2EX
Python
Pycharm 中制表符输出无法对齐,这个怎么解决啊?
520Python
2019 年 12 月 27 日
7544 次点击
这是一个创建于 2310 天前的主题,其中的信息可能已经有所发展或是发生改变。
直接上代码吧:
print("number\tSquare\tCube")
for i in range (1,11):
print(i,"\t",i**2,"\t",i**3)
其中表头和输出都有制表符,输出就无法对齐:
number Square Cube
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
制表符
print
number
表头
22 条回复
2019-12-27 18:22:09 +08:00
1
520Python
OP
2019 年 12 月 27 日
参考图片:
https://upload-images.jianshu.io/upload_images/12134160-3971126e3c9eccee.png
2
wuwukai007
2019 年 12 月 27 日 via Android
403
3
520Python
OP
2019 年 12 月 27 日
@
wuwukai007
图片链接打开 403 吗?我点开正常打开呢
4
BingoXuan
2019 年 12 月 27 日
5
ipwx
2019 年 12 月 27 日
1
你是不是对制表符有什么误解?
制表符的作用只是相当于填充空格,至少填充空格,至多填充空格到下一个光标位置为某个数的整倍数。你这张图看上去 PyCharm 是把它填充为 4 个空格的整倍数。
print(a, b) 这句话,a 和 b 之间本来就会有一个固定的空格。所以你 "\t",i**2,"\t",这里就会是 "\t {number} \t"。比如你那一行,4 \t 16 \t 64 \t 4,你看如果 16 前面的空格是 4 的整倍数列开始的字符,那么 16 加上后面的空格已经占据了第二个 4 的整倍数区域。\t 会让它直接输出 4 个空格占据第三个 4 的整倍数区域。。。所以和上面无法对齐。
用制表符对齐命令行输出基本没戏。你得用更高级的包,比如 terminaltables。
6
wy9899
2019 年 12 月 27 日
请使用占位符
7
ipwx
2019 年 12 月 27 日
@
BingoXuan
lstrip 还不如格式化输出
print('Number Square Cube')
for i in range(1, 11):
....print(f'{str(i):<8s}{str(i**2):<8s}{str(i**3)}')
8
ipwx
2019 年 12 月 27 日
上面写错了,ljust 不如格式化输出
9
520Python
OP
2019 年 12 月 27 日
@
ipwx
@
BingoXuan
10
520Python
OP
2019 年 12 月 27 日
我直接在命令行执行代码,正常展示:
https://upload-images.jianshu.io/upload_images/12134160-2233a1b0126cb7d0.jpg
11
lolizeppelin
2019 年 12 月 27 日
去参考 prettytable 怎么写的
12
520Python
OP
2019 年 12 月 27 日
@
lolizeppelin
谢谢:
https://upload-images.jianshu.io/upload_images/12134160-d1459f55f7e4ec50.png
13
ipwx
2019 年 12 月 27 日
@
520Python
这哪里正常了,你没发现数字和表头没对齐么。。。
请重新阅读一下我的话。\t 的作用是对齐到某个数的整倍数。不同应用程序,这个数不一样,PyCharm 是 4,而 cmd.exe 是 8。带入 8 这个数你重新计算一下。
14
520Python
OP
2019 年 12 月 27 日
@
ipwx
只是稍微比 Pycharm 里好看点^_^
15
BingoXuan
2019 年 12 月 27 日
@
ipwx
其实思路都是一样,都是通过填充空白字符使得最终输出字符串长度固定实现对齐。只是看到 lz 范例输出是左对齐就想到 ljust 的 api。代码可读性来看,格式化输出更好。
@
520Python
terminal 在输出制表符时候的行为好像是有点不一样的。所以填充空白字符使得最终输出字符串长度固定是最稳妥的办法。
16
lolizeppelin
2019 年 12 月 27 日
制表符靠谱 python 就不会用 4 空格了
制表符不靠谱又不是 python 的锅
无论什么语言写对齐都要算字符宽度然后填充空格
中文字符宽度还要麻烦一点
17
labubu
2019 年 12 月 27 日 via Android
print("%4s" %num)
18
jin7
2019 年 12 月 27 日
@
ipwx
#7
for i in range(1, 11):
....print(f'{str(i):<8}{str(i**2):<8}{str(i**3)}')
s 貌似可以去掉
19
jin7
2019 年 12 月 27 日
中间对齐
for i in range(1, 11):
print(f'{str(i):^8}{str(i**2):^8}{str(i**3):^8}')
https://docs.python.org/3.8/library/string.html
20
no1xsyzy
2019 年 12 月 27 日
@
lolizeppelin
制表符在用于 indentation 的时候还是挺靠谱的,不管 4 还是 8 都很整齐
并且还可以根据屏幕大小同代码不同 indentation 距离(看过博客提出这个问题来决定还是采用 Tab indent )
Python 的问题好像是代码格式化时除了 indentation 还时不时需要 alignment,所以还是空格好 当然,这是拍脑袋瞎猜,我没去查 PEP 说为什么这么来。
中文字符已经是比较简单的了,我提醒一下,字符修饰符才是最恶心的,因为你甚至不知道当前字体是否支持字符修饰符,它到底会渲染到另一个字符上去还是渲染成豆腐块。
21
blueset
2019 年 12 月 27 日
ljust或者format spec mini-lang应该都不错。
顺便,图片确实是403了。
22
fuchunliu
2019 年 12 月 27 日 via Android
数字宽度格式化一下?
关于
帮助文档
自助推广系统
博客
API
FAQ
Solana
1174 人在线
最高记录 6679
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 47ms
UTC 17:57
PVG 01:57
LAX 10:57
JFK 13:57
Do have faith in what you're doing.
ubao
msn
snddm
index
pchome
yahoo
rakuten
mypaper
meadowduck
bidyahoo
youbao
zxmzxm
asda
bnvcg
cvbfg
dfscv
mmhjk
xxddc
yybgb
zznbn
ccubao
uaitu
acv
GXCV
ET
GDG
YH
FG
BCVB
FJFH
CBRE
CBC
GDG
ET54
WRWR
RWER
WREW
WRWER
RWER
SDG
EW
SF
DSFSF
fbbs
ubao
fhd
dfg
ewr
dg
df
ewwr
ewwr
et
ruyut
utut
dfg
fgd
gdfgt
etg
dfgt
dfgd
ert4
gd
fgg
wr
235
wer3
we
vsdf
sdf
gdf
ert
xcv
sdf
rwer
hfd
dfg
cvb
rwf
afb
dfh
jgh
bmn
lgh
rty
gfds
cxv
xcv
xcs
vdas
fdf
fgd
cv
sdf
tert
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
sdf
shasha9178
shasha9178
shasha9178
shasha9178
shasha9178
liflif2
liflif2
liflif2
liflif2
liflif2
liblib3
liblib3
liblib3
liblib3
liblib3
zhazha444
zhazha444
zhazha444
zhazha444
zhazha444
dende5
dende
denden
denden2
denden21
fenfen9
fenf619
fen619
fenfe9
fe619
sdf
sdf
sdf
sdf
sdf
zhazh90
zhazh0
zhaa50
zha90
zh590
zho
zhoz
zhozh
zhozho
zhozho2
lislis
lls95
lili95
lils5
liss9
sdf0ty987
sdft876
sdft9876
sdf09876
sd0t9876
sdf0ty98
sdf0976
sdf0ty986
sdf0ty96
sdf0t76
sdf0876
df0ty98
sf0t876
sd0ty76
sdy76
sdf76
sdf0t76
sdf0ty9
sdf0ty98
sdf0ty987
sdf0ty98
sdf6676
sdf876
sd876
sd876
sdf6
sdf6
sdf9876
sdf0t
sdf06
sdf0ty9776
sdf0ty9776
sdf0ty76
sdf8876
sdf0t
sd6
sdf06
s688876
sd688
sdf86