首页 > 解决方案 > 如何正确格式化全宽 unicode 字符串

问题描述

貌似python只加了一个半角空格来格式化字符串,但是对于全角字符,应该有一个全角空格或者两个半角空格。有什么解决办法吗?

代码是:

template = "{:3s}测试"
print(template.format("测试"))
print(template.format("测试二"))

然后输出:

测试 测试
测试二测试

当我更改3为时4,输出为:

测试  测试
测试二 测试

但我想要的输出是

测试  测试
测试二测试

标签: pythonstring-formattingpython-unicodeunicode-string

解决方案


请参阅python 文档 format-examples,第 6 个示例显示我们可以使用{:*^30}使文本居中并填充*^表示居中,它前面的字符是填充字符)。在这个例子中,只需使用全角空间 来替换。*

所以最后,我的模板字符串是:

{: >3s}测试

>表示右对齐。请参阅所有对​​齐字符的 python 文档格式规范

输出是:

 测试测试
测试二测试

我还尝试使用两个半角空格作为填充字符,但它提高了ValueError: Invalid format specifier.

希望答案对将来的人有所帮助


推荐阅读