ubuntu - Python3.x的中文字符在Linux下面的占位问题?
问题描述
运行环境:python3.x + ubuntu
def print_table(table): max_width = 0 # 取table中最长元素 for x in table:if len(x) > col_width: max_width = len(x) max_width = max_width * 2 for x in table:print(’{:{}}’.format(x, max_width) + ’|’)
英文可以正常对齐:
>>> en = [’hello’, ’world’, ’hi’, ’bug’]>>> print_table(en)hello |world |hi|bug |
中文无法无法正常对齐:
>>> ch = [’上海’, ’北京’, ’黑龙江’, ’乌鲁木齐’]>>> print_table(ch)上海 |北京 |黑龙江 |乌鲁木齐 |
请问这是什么原因?我观察了一下好像是中文字符在终端下面的输出都是占用了两个空格,但是英文只占用了一个空格。如果是这样,有什么好的解决方法?
问题解答
回答1:更换终端的字体,更换为等宽字体,像比较养眼的Consolas,Adobe 的开源字体 Source Code Pro...
回答2:Unicode字符串算长度是按照字符数而不是“显示出来的宽度”,一个汉字和一个西文都算1的,所以对不齐。可以用额外的wcwidth包来计算字符占用的格子数。
回答3:解决办法是使用中文全角空格填充,应该对你有帮助。
>>> print('{:{space}<6s}'.format('上海', space=chr(12288))+’|’)上海|>>> print('{:{space}<6s}'.format('北京', space=chr(12288))+’|’)北京|>>> print('{:{space}<6s}'.format('黑龙江', space=chr(12288))+’|’)黑龙江 |>>> print('{:{space}<6s}'.format('乌鲁木齐', space=chr(12288))+’|’)乌鲁木齐|>>> 回答4:
segmentfault.com/q/1010000008288733/a-1020000008291692
相关文章:
1. javascript - 百度坐标,返回目标附近有哪些坐标2. javascript - 关于jsp中嵌入js代码的问题3. javascript - html5多个label中其中一个触发change,如何判断是哪一个出发了change4. javascript - 有一个异步获取数据的函数A,其他依赖这个A得到的数据的函数是否都必须是异步的?5. javascript - 关于fullpage.js的横向滚动控制6. javascript - 有什么兼容性比较好的办法来判断浏览器窗口的类型?7. javascript - 判断用户网络环境8. clone - git sourceTree克隆仓库时,都不停弹出Password Required弹窗,即时输入正确的git账号密码还是弹出9. javascript - 一个JS多元运算符的问题10. angular.js - angurlarJS的安卓的微信端中用加载ngCookies会出错的问题

网公网安备