|
发表于 2015-12-28 13:14:40
|
显示全部楼层
本楼为最佳答案
中英文混排时对齐是比较麻烦的,一个先决条件是必须是等宽字体,每个汉字占2个英文字符的位置。
用print的格式输出是无法完成的。另一个途径就是用字符串的方法ljust, rjust, center先填充空格。但这些方法是以len()为基准的,即1个英文字符长度为1,1个汉字字符长度为3(uft-8编码),无法满足我们的要求。
我写了一个函数,可供参考。核心是利用字符的gb2312编码正好长度汉字是2,英文是1。
- def alignment(str1, space, align = 'left'):
- length = len(str1.encode('gb2312'))
- space = space - length if space >=length else 0
- if align == 'left':
- str1 = str1 + ' ' * space
- elif align == 'right':
- str1 = ' '* space +str1
- elif align == 'center':
- str1 = ' ' * (space //2) +str1 + ' '* (space - space // 2)
- return str1
- #举例
- print('1234567890'*6) #打印标尺
- str1 = 'abc1234'
- str2 = 'abc中文'
- print(alignment(str2, 10, 'center'), alignment(str1, 10), sep = '')
- #print本身就会在每个字符串之间加个空格,这里去掉
-
复制代码 |
评分
-
查看全部评分
|