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

1258人阅读 评论(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

一定可以达到目的。
查看评论

Python的print输出中文对齐问题

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

python 4-5 如何对字符串进行左, 右, 居中对齐str.ljust/rjust/center/format(s,'<20'/'>20'/'^20')

python 4-5 如何对字符串进行左, 右, 居中对齐str.ljust/rjust/center/format(s,’20’/’^20’) 解决方案: 使用字符串的str.ljust() s...
  • u013679490
  • u013679490
  • 2017-01-22 15:22:46
  • 2983

python以正确的宽度在居中的‘盒子’打印一个句子

sentence=raw_input(‘Sentence: ‘)screen_width=80 text_width=len(sentence) box_width=text_width+6 l...
  • qq_25067905
  • qq_25067905
  • 2016-12-09 16:54:16
  • 543

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:56
  • 804

【Python】Python中中文的字符串格式化对齐

中文字符在字符占用上相当于两个英文字符,但是字体设计上,一般一个中文字符的宽度不会等于两个英文字符的宽度,所以打印出来的效果有偏差。 但是等宽字符一个中文字体的宽度刚好等于两个英文字符宽度。我们可以...
  • oYunTaoLianWu
  • oYunTaoLianWu
  • 2016-01-13 19:26:00
  • 5198

Python高级编程-如何对字符串进行左,右,居中对齐?

>>> d={'dniudc':500.0,'jdsc':0.05,'kjdks':255,'jksdc':400.3,'djfvd':58} >>> d.keys() dict_keys(['dni...
  • CEOko1007
  • CEOko1007
  • 2017-11-06 21:24:38
  • 89

Python - 字符串对齐

字符串对齐 本文地址: http://blog.csdn.net/caroline_wendy/article/details/20463231 Python中, 字符串对齐, 使用ljust...
  • u012515223
  • u012515223
  • 2014-03-04 15:10:41
  • 11977

python中的字符串操作

1、什么是BIF? BIF就是Built-in Functions,内置函数。为了方便程序员快速编写脚本程序,Python提供了非常丰富的内置函数,我们只需要直接调用即可,例如print()的功能是...
  • Strive_0902
  • Strive_0902
  • 2017-07-31 11:17:55
  • 323

Python中输入和输出

一、标准输入输出1、打印到屏幕产生输出的最简单方法是使用print语句,可以通过用逗号分隔零个或多个表达式。这个函数传递表达式转换为一个字符串,如下结果写到标准输出 -print ("Python i...
  • xiaokang123456kao
  • xiaokang123456kao
  • 2017-06-11 00:31:30
  • 5948

Python学习笔记(29)-Python创建并写入word文档

一,简介上一篇已经介绍了python-docx模块的安装和导入,本篇直接介绍如何创建并写入word文档,需要注意的是:创建word并写入之后,操作的都是内存中的对象,最后需要保存到文件,才能看到真实的...
  • woshisangsang
  • woshisangsang
  • 2017-07-18 14:45:23
  • 2966
    个人资料
    持之以恒
    等级:
    访问量: 4万+
    积分: 716
    排名: 7万+
    文章存档
    最新评论