Как правильно отформатировать юникодную строку полной ширины - PullRequest
0 голосов
/ 16 ноября 2018

Кажется, что python добавляет только одну половину ширины пробела для форматирования строки, но для символов полной ширины должен быть пробел полной ширины или два пробела половинной ширины. Есть ли какое-нибудь решение?

код:

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

затем вывод:

测试 测试
测试二测试

когда я изменяю 3 на 4, вывод:

测试  测试
测试二 测试

но я хочу получить вывод

测试  测试
测试二测试

1 Ответ

0 голосов
/ 16 ноября 2018

См. python docs format-examples , 6-й пример показывает, что мы можем использовать {:*^30}, чтобы сделать текст в центре и заполнить * (^ означает центр и символ перед нимэто заполняющий символ).Просто используйте полную ширину   для замены * в этом примере.

Итак, наконец, моя строка шаблона:

{: >3s}测试

> означаетвыравнивание по правому краюСм. спецификация формата python docs для всех выравнивающих символов

вывод:

 测试测试
测试二测试

Я также попытался использовать два пространства полуширины в качестве заполнителя,но это подняло ValueError: Invalid format specifier.

Надеюсь, ответ поможет кому-то в будущем

...