关闭

python中文字符串居中/中文居中python/python汉字字符串居中:手撕比方法好用

741人阅读 评论(0) 收藏 举报
分类:

在做一个小的格式化输出的时候出现了问题:无论怎么排,汉字都无法很顺利地被居中,尤其是汉字和英文或者数字在一起时,更是一团糟。


python有内置的字符串方法str.center(x),可以让字符串以i的长度输出并居中。

但是!

但是!

但是!

在计算字符串长度时候默认是ascii的长度,也就是一个字符长度为1。

这显然行不通,因为一个中文占据2长度!中文符号亦然。

所以你要是想让 x=‘居中juzhong’ 这个字符串居中,你用str.center(len(x))的时候,就不能达到目的,原因是 len(x)=9 而不是实际上的11,输出的结果那自然是相当糟糕的。于是我写了一个函数,可以读取正确的字符串长度:

def lenCN(n):
    #遇到非英文,自动二倍长度。
    n=list(n)
    stl=0
    for x in n :
        if x in string.printable:
            stl +=1
        else :
            stl+=2
    return stl
这样字符串的正确长度就可以读取了,但是这对于顺利进行居中排版还是不够的。正确的做法应该是:用这个函数读取某项所有单位的实际长度(比如‘姓名’),求出其中最大值,(比如‘爱新觉罗狗蛋’,为12),再加上为了美观考虑的一些空长度(随意,比如4)。然后让所有的姓名单位输出时用 print(x.center(12+4))即可。

有的时候,这样的输出也依然无法做到居中(奇数偶数空格的问题)。

这个时候,可以使用我写的这个小函数来完成。

def merg(x,y):
    a=int((最大长度列表[项目名]-checkCN(当前项))/2)
    b=int(((最大长度列表[项目名]-checkCN(当前项))/2)
    if a+b != ((最大长度列表[项目名]-checkCN(当前项)))) :
        b+=1
#防止出现奇数项的情况
    return(a,b,)
def getmerg(x,y):
    y=' '*merg(x,y)[0]+y+' '*merg(x,y)[1]
    return y

一定可以达到目的。

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Python的print输出中文对齐问题

Python的print函数输出中文字符串对齐问题的解决方案。
  • sbdxxcjh
  • sbdxxcjh
  • 2014-07-22 22:11
  • 9162

python xlwt 写excel格式设置大全

Examples Generating Excel Documents Using Python’s xlwt Here are some simple examples usingPython...
  • qq798618048
  • qq798618048
  • 2013-11-06 12:48
  • 6569

python 中英混合字符串格式对齐所引发的思考

对字符串非中文格式化,我们常用的方式是通过print 方式下的右对齐 n%s(左对齐-n%s)或者ljust\rjust; 但上面存在一个缺点就是对于含有中文字符串的处理是不兼容,导致打印出来格式还是...
  • annulsluo
  • annulsluo
  • 2015-10-31 17:46
  • 2083

python-15-如何对字符串进行左,右,居中对齐?

如果是正常迭代,是这样的。d = {'Adddd' : 500.0,'sB' : 0.04,'qqqqqqqqqC' : 477,'Dddd' : 100.0,'E' : 40 }for i in d...
  • qq_33936481
  • qq_33936481
  • 2017-05-03 19:41
  • 640

python数字转换成中文/数字转换成汉字python:纯字符串方法最优

python 将数字转换为中文/python将阿拉伯数字转换成中文/ python将数字转换为汉字/python将阿拉伯数字转换成汉字/ 对比了三种不同方法,字符串法最优。
  • PlusChang
  • PlusChang
  • 2017-06-10 16:09
  • 3211

Python----使用正则re查找文本中特定中文字符串

Python----使用正则re查找文本中特定中文字符串 例子1:脚本文件 root@kali:~/python/dinpay# cat t.py #coding:utf-8 impor...
  • xwbk12
  • xwbk12
  • 2018-01-10 16:58
  • 38

Python 用hashlib求中文字符串的MD5值

http://blog.csdn.net/haungrui/article/details/6959340 使用过hashlib库的朋友想必都遇到过以下的错误吧:“Unicode-objects m...
  • jjwspj
  • jjwspj
  • 2012-08-24 18:52
  • 749

python 学习(一) 中文,字符串,以及input和raw_input区别

1.中文问题 如果你的python文件需要使用中文,需要在文件的开始使用#coding=utf-8## 2 .The difference of input and raw_input##name ...
  • CanNotComplain
  • CanNotComplain
  • 2016-12-07 10:52
  • 640

python测试字符串是否包含中文,大小写字符,数字等

这里我们将使用到re模块,Python通过re模块提供对正则表达式的支持。使用re的一般步骤是先将正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获得匹配结果(一个...
  • qq_34834193
  • qq_34834193
  • 2016-10-20 15:16
  • 362

Python 字符串编码中中文字符注意事项

是这么个样子的,在用python连接上oracle数据库之后,使用了带有中文的select语句,一直在报这个错: 'ascii' codec can't encode characters in po...
  • Alvin__Yang
  • Alvin__Yang
  • 2015-12-30 09:18
  • 301
    个人资料
    • 访问:21054次
    • 积分:482
    • 等级:
    • 排名:千里之外
    • 原创:27篇
    • 转载:0篇
    • 译文:0篇
    • 评论:3条
    最新评论