Подтвердить что ты не робот

Строка формата python разделитель тысяч с пробелами

Для печати номера с тысячным разделителем, можно использовать строку формата python:

'{:,}'.format(1234567890)

Но как я могу указать, что мне нужно пространство для разделителя тысяч?

4b9b3361

Ответ 1

Вот плохое, но простое решение, если вы не хотите возиться с locale:

'{:,}'.format(1234567890.001).replace(',', ' ')

Ответ 2

Это установит среду локали в местоположение вашей ОС по умолчанию:

import locale
locale.setlocale(locale.LC_ALL, '')

Затем вы можете использовать:

"{0:n}".format(1234567890)

Ответ 3

Вместо этого вам нужно будет использовать формат номера 'n' для локали, а установить локаль, чтобы использовать пространство в качестве разделителя тысяч. Да, это больно.

'n' - Номер. Это то же самое, что и 'd', за исключением того, что он использует текущую настройку локали для вставки соответствующих символов разделителя номера.

Ответ 4

Ответа на вопрос @user136036 неплохо, но, к сожалению, он не учитывает реальность ошибок Python. Полный ответ может быть следующим:

Вариант A

Если язык вашей платформы работает правильно, просто используйте язык:

import locale
locale.setlocale(locale.LC_ALL, '')
print("{:,d}".format(7123001))

Результат зависит от правильности вашей локали и реализации Python.

Но что делать, если форматирование Python в соответствии с локалью нарушено, например. Python 3.5 в Linux?

Вариант B

Если Python не учитывает параметр grouping=True, вы можете использовать локаль и обходное решение (используйте денежный формат):

locale.setlocale(locale.LC_ALL, '')
locale._override_localeconv = {'mon_thousands_sep': '.'}
print(locale.format('%.2f', 12345.678, grouping=True, monetary=True))

Выше дает 12.345,68 на моей платформе. Настройка денежного значения на False или его отсутствие - Python не группирует тысячи. Указание locale._override_localeconv = {'thousands_sep': '.'} ничего не делает.

Вариант C

Если у вас нет времени, чтобы проверить, что работает нормально и что с Python на вашей платформе, вы можете просто использовать регулярную функцию замены строки (если вы хотите поменять запятые и точки на точки и запятую):

print("{:,.2f}".format(7123001.345).replace(",", "X").replace(".", ",").replace("X", "."))

Замена запятой для пространства тривиальна (точка считается десятичным разделителем):

print("{:,.2f}".format(7123001.345).replace(",", " ")