python 中英文输出 对齐
生活随笔
收集整理的這篇文章主要介紹了
python 中英文输出 对齐
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄)
- 問題描述
- 問題
- 最初代碼:
- 最初格式
- 原因
- 解決方法一
- 代碼:
- 格式
- 解決方法二 (wrong 只是巧合)
- 代碼
- 格式
- 參考文章
問題描述
問題
products = [["iphone", 6888], ["MacPro", 14800], ["小米6", 2499], ["Coffee", 31], ["Book", 60], ["Nike", 699]]將列表中的數據按圖中格式對齊
最初代碼:
products = [["iphone", 6888], ["MacPro", 14800], ["小米6", 2499], ["Coffee", 31], ["Book", 60], ["Nike", 699]]print("------\t商品格式\t------") for i in range(len(products)):print(i,"\t", products[i][0], "\t", products[i][1])最初格式
原因
中文1個字符的寬度 = 2個ASCII符號的寬度。
若有兩字符串度相同(len函數的返回值),但如果其中一個字符串中含有中文,那他們的長度就不同。
解決方法一
定義一個函數,遇到中文便自動調整輸出的格式中規定的長度
代碼:
# 漢字占兩英文寬,則每存在一個漢字少填充一個長度 def pad_len(string, length):return length - len(string.encode('GBK')) + len(string)products = [["iphone", 6888], ["MacPro", 14800], ["小米6", 2499], ["Coffee", 31], ["Book", 60], ["Nike", 699]]print("---- 商品格式 ----") for i in range(len(products)):#print("%-2d%-10s%10d" % (i, products[i][0], products[i][1])) # 遇到中文會對不齊print("{0:<{len1}}\t{1:<{len2}}\t{2:<{len3}}".format(i, products[i][0], products[i][1], len1=2,len2 = pad_len(products[i][0], 10), len3 = 10))格式
解決方法二 (wrong 只是巧合)
不知道原理, 當字符串中只有兩個中文字符時 “\t” 會使兩字符串對齊
比如一開始舉的例子
但當一字符串中中文字符大于兩個時,就對不齊了。
代碼
products = [["iphone", 6888], ["MacPro", 14800], ["小米6", 2499], ["Coffee", 31], ["Book", 60], ["Nike", 699]]print("------\t商品格式\t------") for i in range(len(products)):print(i, end='\t')print(products[i][0], end='\t')print(products[i][1], end='\n')格式
參考文章
解決方法一: Python中英文對齊終極解決方案
---------------- 更新 ------------------------
看到了大佬的文章, 很有用!!!
python str.format與制表符\t關于中文對齊的細節問題
總結
以上是生活随笔為你收集整理的python 中英文输出 对齐的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中的时区转换
- 下一篇: 天翼物联加入ZETA联盟共建物联生态圈