问题描述

强迫症发作

对齐结果

成绩单对齐

# 汉字占两英文宽,则每存在一个汉字少填充一个长度

def pad_len(string, length):

return length - len(string.encode('GBK')) + len(string)

...

print("{0:{len3}}".format(*line, len1=pad_len(line[0], 8), len2=pad_len(line[1], 20), len3=pad_len(line[2], 20)))

大学列表对齐

看起来是对齐的,在中英文字体宽度不是2倍宽度的情况下,但是format具有不确定性:

ulist = []

ulist.append([1, "清华大学", "10", "北京市"])

ulist.append([2, "中国科学技术大学", "10", "安徽合肥"])

ulist.append([3, "复旦大学", "10", "上海"])

print('^' * 40, '四列三行:列不同,行相同', '^' * 40)

for ul in ulist:

print("{0:{4}^6}{1:{4}<20}{2:{4}^10}{3:{4}<10}".format(*ul, chr(12288)))

print('+' * 40, '三列三行:列不同,行相同', '+' * 40)

for ul in ulist:

print("{0:^6}{1:{4}<20}{2:^10}".format(*ul, chr(12288)))

ulist.insert(0, ['编号', '大学', '评价', '省市'])

print('+' * 40, '四列四行:不仅列不同,行也不同', '+' * 40)

for ul in ulist:

print("{0:{4}^6}{1:{4}<20}{2:{4}^10}{3:<10}".format(*ul, chr(12288)))

print('x' * 40, '三列四行:不仅列不同,行也不同', 'x' * 40)

for ul in ulist:

print("{0:{4}^6}{1:{4}<20}{2:^10}".format(*ul, chr(12288)))

注意,行数相同(且每一列的字符行都和上一行的字符编码长度一样,前提条件),三列的时候和四列的情况还不一样,四列多一个 chr(12288)的填充字符。中英文混排列,总共N个列,也就是 N-1个列都需要chr(12288)。

列数相同(非前提条件,仅排除干扰因素),三行和四行(四行的第一行和第二行的字符编码长度不一样),所需要的 chr(12288)的填充字符 也不一样,少一个就不能对齐。

结论

结论一:在中英文长度倍数不确定的等宽字体下,能否对齐是不确定的,具体表现在:需要尝试加填充字符,且个数随着行列变化。

结论二:在中英文长度倍数确定为2的等宽字体下,能否对齐是确定的,具体表现在:无需设置填充字符,且可以统一计算长度。

结论三:面向字体编程,等宽字体对齐还靠运气。

本文例子参考了 他的博客

python中英文对齐_Python中英文对齐终极解决方案相关推荐

  1. TextView设置文字包含中英文时自动换行问题的终极解决方案

    TextView设置文字包含中英文时自动换行问题的终极解决方案 参考文章: (1)TextView设置文字包含中英文时自动换行问题的终极解决方案 (2)https://www.cnblogs.com/ ...

  2. python字符串对齐_Python - 字符串对齐

    字符串对齐 本文地址: http://blog.csdn.net/caroline_wendy/article/details/20463231 Python中, 字符串对齐, 使用ljust(), ...

  3. python第一行左对齐_python 左对齐,右对齐

    python 左对齐,右对齐 >>> print('{} and {}'.format('hello','world')) # 默认左对齐 hello and world >& ...

  4. python中文对齐_Python中英文对齐终极解决方案

    原博文 2020-05-14 17:43 − ## 问题描述 强迫症发作 ## 对齐结果 ![](https://img2020.cnblogs.com/blog/1418366/202005/141 ...

  5. python左右同时对齐_python怎么对齐

    在python中经常会使用到打印,但是在打印表格时经常遇到中英文对齐问题,怎么解决呢? 往往要对输出内容进行对齐,看起来更清爽.(推荐学习:Python视频教程) 通过ljust(),center() ...

  6. python 英语翻译_python中英文翻译模块

    从一种语言到另一种语言的文本翻译在各种网站中越来越普遍. 帮助我们执行此操作的python包称为translate. 可以通过以下方式安装此软件包. 它提供主要语言的翻译. 安装 pip instal ...

  7. python 英语翻译_python中英文翻译

    代码实现: 现在该 POST 的 Data 都有了,开始正式写代码啦,下面是程序的代码,每行我都有详细的注释,相信大家通过上面的分析也是可以看明白的. import time # 时间戳 import ...

  8. python 英语翻译_python 中英文翻译

    [实例简介] [实例截图] [核心代码]import urllib.request #导入urllib模块,主要功能是获取网页数据,request用于模拟发送请求 import urllib.pars ...

  9. python 学习指南_Python类型检查终极指南

    python 学习指南 In this guide, you will get a look into Python type checking. Traditionally, types have ...

  10. python内存持续增长_Python 进程内存增长解决方案

    一.表现 运行环境: # uname –a Linux ** 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_ ...

最新文章

  1. FPGA的历史、现状和未来
  2. 【测试点2超时问题】1046 Shortest Distance (20 分)_21行代码AC
  3. url编码函数encodeURI和encodeURIComponent
  4. 含噪数据的有效训练,谷歌地标图像检索竞赛2020冠军方案解读
  5. Windows/Linux下获取当前线程的ID号
  6. 复制构造函数与析构函数
  7. OpenCV 与 Matlab 中最小二乘法拟合直线数据不一致的问题
  8. 使用AStar算法解决八数码问题
  9. 英文翻译软件哪个好?不能错过的有这几个。
  10. 线性方程组解个数的判定和求解
  11. 多多进宝推广团队_多多进宝推广团长玩法指南
  12. 游戏计算机电源,吃鸡一族看过来,游戏PC应配什么电源?
  13. linux桌面 任务栏,状态栏消失恢复
  14. kvm切换器不了linux系统,KVM切换器使用中最常见故障排除处理
  15. SCJP刷题学习笔记(Part four)
  16. python定时器每隔几秒执行一次
  17. SpringBoot - @EnableConfigurationProperties注解使用详解
  18. Django 2.2:模型M.定义模型
  19. 【人工智能】人工智能是中国2025的歧路;人工智能只是智能制造舞台上的“小配角”
  20. mysql可变65535_MySQL 报Row size too large 65535 原因与解决方法

热门文章

  1. mt管理器错误信息java_DEX编辑
  2. 均值、方差、标准差、协方差详解及MATLAB实现
  3. 敲笨钟(古诗词押 ong 韵)
  4. U盘数据恢复工具哪个好?
  5. 修复华为移动服务器,移动app云服务器异常
  6. RGB颜色中关于Alpha通道的计算
  7. qtxlsx读写 excel
  8. 前端工程师的前途与价值体现
  9. 弃用个人博客站重返CSDN缘由
  10. Linux多媒体开发基础