Python3.x的中文字符str 在Linux下面的占位符问题?,python3.xstr,运行环境:python3
Python3.x的中文字符str 在Linux下面的占位符问题?,python3.xstr,运行环境:python3
运行环境: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)上海 |北京 |黑龙江 |乌鲁木齐 |
请问这是什么原因?我观察了一下好像是中文字符在终端下面的输出都是占用了两个空格,但是英文只占用了一个空格。如果是这样,有什么好的解决方法?
segmentfault.com/q/1010000008288733/a-1020000008291692
解决办法是使用中文全角空格填充,应该对你有帮助。
>>> 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))+'|')乌鲁木齐 |>>>
Unicode字符串算长度是按照字符数而不是“显示出来的宽度”,一个汉字和一个西文都算1的,所以对不齐。可以用额外的wcwidth包来计算字符占用的格子数。
更换终端的字体,更换为等宽字体,像比较养眼的Consolas,Adobe 的开源字体 Source Code Pro...
编橙之家文章,
相关内容
- Python time.sleep睡眠后无法唤醒是何原因,pythontime.sleep
- Python检测网站源码是否有改变如何写这样的对比源码,
- Python 日期格式转换例如2012-4-3转为2012-04-03怎么处理,
- 怎么能保证python抓取页百标题的正确率,python抓取,通过
- Python re正则表达式多组匹配问题,python正则表达式,比如
- flask中蓝图blueprint作用是什么?,flaskblueprint,我在学习
- Python django开发网站发现的问题,pythondjango,最近在学习
- Python菜鸟要开发一个api怎么入手,python菜api入手,各位大
- 网易云音乐python爬虫api接口,网易python爬虫api,抓包能力
- Python map对象进行列表解析返回空列表正常吗,pythonma
评论关闭