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

任务成功完成!

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。