python表格对齐_python str.format 中文对齐的细节问题,
python str.format 中文對(duì)齊的細(xì)節(jié)問(wèn)題,
寫了一個(gè)練手的爬蟲(chóng)...在輸出的時(shí)候出現(xiàn)了讓人很不愉♂悅的問(wèn)題
像這樣:
令人十分難受啊!
#-------------------------------------------------------------------------------------------------
在此之前先說(shuō)一下python中的.format格式化輸出
python2.6開(kāi)始,可以使用str.format進(jìn)行輕松的格式化,
如上可以看到,對(duì)變量的處理簡(jiǎn)潔靈活,此外對(duì)數(shù)字的各種位數(shù)處理也很到位
{:為右對(duì)齊,^為居中),少于x位自動(dòng)補(bǔ)齊(默認(rèn)為空格補(bǔ)齊)
這里值得注意的是,x也可以作為變量代入:
py雖好,有些細(xì)節(jié)還是沒(méi)有照顧到中文
這里補(bǔ)齊長(zhǎng)度時(shí)中文字符也按1字節(jié)計(jì)算了,
然而我們知道,utf-8中中文占用3個(gè)字節(jié),GBK中占用了2個(gè)字節(jié),只算作1字節(jié)顯然不能對(duì)齊
這時(shí)求助于prettytable包輸出表格,然而輸出也不理想,可以想象也沒(méi)有考慮中文編碼的問(wèn)題(或是需要設(shè)置編碼為utf-8或gbk?)
分析一下理想的name所占的長(zhǎng)度,應(yīng)為固定的x字節(jié)(這里按目前的爬取結(jié)果暫時(shí)取22)
那么他的補(bǔ)齊長(zhǎng)度應(yīng)為
len = 22 - gbk編碼下name的字節(jié)數(shù) + name的字符數(shù)
幸運(yùn)的是str.format支持使用變量代替補(bǔ)齊長(zhǎng)度的值
嘗試以下代碼:
print('[{name:<{len}}x'.format(name=name+']',len=22-len(name.encode('GBK'))+len(name)))結(jié)果十分接近理想了:
還是有一些迷之問(wèn)題導(dǎo)致1-0.5字節(jié)長(zhǎng)度的偏差,猜測(cè)是由于中文字體不是等寬字體的緣故?
然而不用多慮,這里就可以使用一記粗暴的制表符\t解決問(wèn)題了
print('[{name:<{len}}\tx'.format(name=name+']',len=22-len(name.encode('GBK'))+len(name)))
作者:killercars
來(lái)源:CSDN
原文:https://blog.csdn.net/excaliburrr/article/details/76794451
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
http://www.dengb.com/Pythonjc/1349179.htmlwww.dengb.comtruehttp://www.dengb.com/Pythonjc/1349179.htmlTechArticlepython str.format 中文對(duì)齊的細(xì)節(jié)問(wèn)題, 寫了一個(gè)練手的爬蟲(chóng)...在輸出的時(shí)候出現(xiàn)了讓人很不愉♂悅的問(wèn)題 像這樣: 令人十分難受啊! #----...
總結(jié)
以上是生活随笔為你收集整理的python表格对齐_python str.format 中文对齐的细节问题,的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 应用框架的设计与实现学习手札系列(持续更
- 下一篇: python import re_Pyt