美文网首页
python字符串format中英文空格对齐问题

python字符串format中英文空格对齐问题

作者: 狗狗胖妞 | 来源:发表于2020-06-06 21:47 被阅读0次

python2.6之后format通过{}和:来代替%

format函数格式化字符串的用法

参考文档: https://blog.csdn.net/NightCharm/article/details/62041068

print('{0},{1}'.format('zhangk', 32))                                       #zhangk,32
print('{},{},{}'.format('zhangk', 'boy', 32))                               #zhangk,boy,32
print('{name},{sex},{age}'.format(age=32, sex='male', name='zhangk'))       #zhangk,male,32




#  丰富的格式限定符(语法是{}中带:号):      "

## 填充与对齐,填充常跟对齐一起使用
"""
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
^ < >分别是居中、左对齐、右对齐,后面带宽度
"""
print('{:>8}'.format('zhang'))      #   zhang ,默认空格填充
print('{:0>8}'.format('zhang'))     #000zhang
print('{:a<8}'.format('zhang'))     #zhangaaa
print('{:p^10}'.format('zhang'))    #ppzhangppp


# 精度与类型f
"""精度与类型f, 精度常跟类型f一起使用"""
print('{:.2f}'.format(31.31412))    #31.31

# 其他类型
"""主要就是进制,b ,d , o, x分别是二进制、十进制、八进制、十六进制"""
print('{:b}'.format(15))   #1111
print('{:d}'.format(15))   #15
print('{:o}'.format(15))   #17
print('{:x}'.format(15))   #f


# 用逗号还能用来做金额的千位分隔符
print('{:,}'.format(123456789)) #123,456,789

格式输出对齐问题

参考文档: https://blog.csdn.net/qq_36063677/article/details/77854124

>>> info = [{'name': '你好你好你好', 'age': 26}, {'name': '小李', 'age': 26}, {'name': '小王', 'age': 26}]
>>>
>>> for i in info:
...    print('{:^12}{:^3}'.format(i.get('name'), i.get('age')))
...
   你好你好你好   26
     小李     26
     小王     26
>>>
>>>
>>>
>>> tplt = '{0:{2}^12}{1:^3}'
>>> for i in info:
...    print(tplt.format(i.get('name'), i.get('age'), chr(12288)))
...
   你好你好你好   26
     小李     26
     小王     26
>>>

原因:当中文字符宽度不够时,采用西文字符填充;中西文字符占用宽度不同
解决方案: 采用中文字符空格填充,(utf-8编码)chr(12288)
{0:{2}^12}的意思为打印字符串变量时,使用format()中第二个变量类进行填充,即使用中文空格进行填充



注意:中英文混合的字符串仍然无法通过这个方式处理

>>> tplt = '{0:{2}^12}{1:^3}'
>>> for i in info:
...   print(tplt.format(i.get('name'), i.get('age'), chr(12288)))
...
   你好你好你好   26
     小李     26
     小王     26
    ccc     26
>>>
>>> print("{:p^6}".format('你好'))   #从这可以看出中英文混合后的宽带是无法预知的
pp你好pp
>>>

因为中西文字符占用宽度不同,所以即使使用中文空格进行填充也不是齐的

相关文章

  • python字符串format中英文空格对齐问题

    python2.6之后format通过{}和:来代替% format函数格式化字符串的用法 参考文档: htt...

  • python中format函数

    python中format函数用于字符串的格式化 通过关键字 通过位置 填充和对齐^<>分别表示居中、左对齐、右对...

  • Python字符串的填充对齐

    使用format() 内容左侧填充对齐,format(‘string’,‘*>10’) 表示在字符串‘string...

  • [Python]中英文混合字符串的对齐

    002-PG002-Python002 中英文混合字符串的对齐 最近几天在研究tkinter的颜色名称,准备写个能...

  • fortran实例_挑选LLJs

    Frotran 删除字符串空格 Trim 删除字符串结尾处的空格AdjustL 删除字符串开头的空格,左对齐Ad...

  • 解决KeyError报错

    问题 在 python 中经常会用到字符串替换,使用 format 可以实现该功能。 最近在使用 format 时...

  • 自学Python:Python ljust()方法

    Python ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原...

  • 字符串

    字符串格式化 format()函数——》通过{} ^,<,>分别是居中、左对齐、右对齐,后面带宽度 :后面带填充的...

  • python 文章合集

    1.format function(作分隔符以及左右对齐,进制标识说明) format函数格式化字符串的用法 2....

  • 字符串与编码

    Python的字符串 格式化 format() 代码案例

网友评论

      本文标题:python字符串format中英文空格对齐问题

      本文链接:https://www.haomeiwen.com/subject/ljdnzhtx.html