amtoaer

晓风残月

叹息似的渺茫,你仍要保存着那真!
github
x
telegram
steam
nintendo switch
email

Python中文字符串居中問題

最近在實現一個小功能的時候遇到了問題:字符串的居中輸出。

雖然 python 有內置的字符串方法string.center(),使字符串可以居中輸出,但它並不能順利地處理中文字符串,一直無法達到讓中文字符串居中的效果。

後來我突然醒悟,是不是因為 python 字符串長度的問題?用以下代碼測試:

str1='哈哈哈'
str2='hhh'
print(len(str1),'+',len(str2))

輸出結果居然是3+3,也就是說 python 將一個漢字 / 字母都記作一個字符,但其實它們的寬度並不相同。這樣計算的話必然會導致無法正常居中,關鍵是要把漢字區別出來,於是我手動寫了個居中函數:

def strCenter(str, len):
    lst = list(str)
    length = 0
    for item in lst:
        if item in string.printable:
            length += 1
        else:
            length += 2
    count = int((len - length) / 2)
    result = count * ' ' + str + count * ' '
    return result

就可以正常居中啦!

追加以下內容測試一下:

a = '哈a哈a哈a哈a'
b = '12345678901234567890'
print(a.center(20))
print(b.center(20))
print(20 * '-')
print(strCenter(a, 20))
print(strCenter(b, 20))

運行結果:

      哈a哈a哈a哈a      
12345678901234567890
--------------------
    哈a哈a哈a哈a    
12345678901234567890

任務成功完成!

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。