Для печати номера с тысячным разделителем, можно использовать строку формата python:
'{:,}'.format(1234567890)
Но как я могу указать, что мне нужно пространство для разделителя тысяч?
Для печати номера с тысячным разделителем, можно использовать строку формата python:
'{:,}'.format(1234567890)
Но как я могу указать, что мне нужно пространство для разделителя тысяч?
Вот плохое, но простое решение, если вы не хотите возиться с locale
:
'{:,}'.format(1234567890.001).replace(',', ' ')
Это установит среду локали в местоположение вашей ОС по умолчанию:
import locale
locale.setlocale(locale.LC_ALL, '')
Затем вы можете использовать:
"{0:n}".format(1234567890)
Вместо этого вам нужно будет использовать формат номера 'n'
для локали, а установить локаль, чтобы использовать пространство в качестве разделителя тысяч. Да, это больно.
'n'
- Номер. Это то же самое, что и'd'
, за исключением того, что он использует текущую настройку локали для вставки соответствующих символов разделителя номера.
Ответа на вопрос @user136036 неплохо, но, к сожалению, он не учитывает реальность ошибок Python. Полный ответ может быть следующим:
Если язык вашей платформы работает правильно, просто используйте язык:
import locale
locale.setlocale(locale.LC_ALL, '')
print("{:,d}".format(7123001))
Результат зависит от правильности вашей локали и реализации Python.
Но что делать, если форматирование Python в соответствии с локалью нарушено, например. Python 3.5 в Linux?
Если 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': '.'}
ничего не делает.
Если у вас нет времени, чтобы проверить, что работает нормально и что с Python на вашей платформе, вы можете просто использовать регулярную функцию замены строки (если вы хотите поменять запятые и точки на точки и запятую):
print("{:,.2f}".format(7123001.345).replace(",", "X").replace(".", ",").replace("X", "."))
Замена запятой для пространства тривиальна (точка считается десятичным разделителем):
print("{:,.2f}".format(7123001.345).replace(",", " ")