Как я могу напечатать числа в python с символами пробела в качестве разделителей тысяч? - PullRequest
0 голосов
/ 04 июня 2018

Например, я знаю, что формат "{:,}". (123456789) будет выводить 123,456,789 как вывод в Python.

Однако вместо запятых я хотел бы использовать символ пробела в качестве разделителя тысяч.Согласно здесь , исходная кодировка Python для символа тонкого пространства - это u "\ u2009".

Поэтому я попытался заменить запятую в "{:,}" на u "\ u2009msgstr ", но это приводит к синтаксической ошибке.Это может быть связано с тем, что python не может справиться с полученными вложенными двойными кавычками и что-то должно быть экранировано.

Так есть ли способ заставить это или какой-то другой механизм работать?И, кстати, я хотел бы подавить одинарные кавычки, которые появляются в выводе.

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Вы можете использовать метод replace из str для замены , на тонкие пробелы после его форматирования, то есть: "{:,}".format(123456789).replace(",", u"\u2009")

Согласно официальной документации здесь только , и _ могут использоваться в качестве разделителей.Чтобы использовать пользовательскую, вам нужно использовать представление n и изменить настройки locale (см. https://docs.python.org/3/library/locale.html#locale.LC_NUMERIC).. Вы можете создать новую локализацию и использовать эту ложную локализацию для того, что вы хотите, но этоэто довольно сложное решение.

РЕДАКТИРОВАТЬ: Под фальшивой локализацией я действительно подразумеваю новую локаль на вашем компьютере, а не в Python. Вы можете прочитать https://askubuntu.com/questions/653008/how-to-create-a-new-system-locale для получения более подробной информации (я думаю, что это можетбыть адаптированным в большинстве дистрибутивов)

0 голосов
/ 04 июня 2018

Я могу предложить вам очевидный обходной путь:

>>> n = 123456789
>>> print(f'{n:,}'.replace(',', u'\u2009'))
123 456 789

Работает для str.format таким же образом.

...