Python разделитель разрядов пробел

Разделитель тысяч в формате Python с пробелами

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

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

@Vanuan: Какую версию Python вы используете? Я проверил это с 2,6 и 2,7; 2.5 и старше не имеют str.format() .

@Vanuan: Или вы используете форматирование строки % ? Этот тип форматирования строк не поддерживает n в одной версии Python.

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

Вариант A

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

import locale locale.setlocale(locale.LC_ALL, '') print("".format(7123001)) 

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

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

Вариант B

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

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

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

Вариант C

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

print(«<. 2f>«.format(7123001.345).replace(«,», «X»).replace(«.», «,»).replace(«X», «.»))

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

Источник

Добавление пробелов между разрядами числа, денежный формат. Decimal

У меня в табличке сейчас сумма показана в формате «768768768.00». Мне нужно отображать числа с пробелами между разрядов. Число Decimal. Можете помочь?

1 2 3 4 5 6 7 8 9 10 11 12 13
def displayData ( self, I ) : if I.column() == 5 : return unicode( self[I.row()].summa ) return QtCore.QVariant( self[I.row()][I.column()] ) def textAlignmentRole ( self, I ) : if I.column() == 5 : return QtCore.QVariant ( QtCore.Qt.AlignRight + QtCore.Qt.AlignVCenter ) return QtCore.QVariant ( None ) def data ( self, I, role ) : if role == QtCore.Qt.DisplayRole : return self.displayData( I ) elif role == QtCore.Qt.TextAlignmentRole : return self.textAlignmentRole( I ) else : return QtCore.QVariant( None )

Добавлено через 1 час 46 минут
Нашла PEP Index > PEP 378 — Format Specifier for Thousands Separator

Читайте также:  Traefik php docker compose

Вот только не применю никак. Буду разбираться.

Преоброзование числа в денежный формат
У меня есть число, например 1529674,43 как мне его преобразовать в след вид: 1 529 674,43 или.

Преобразование числа в денежный формат (Си++)
Только начал изучать язык Си++ и пока что не очень понимаю его. Помогите разобраться. Заранее.

Денежный формат целого числа
Доброго времени суток. Столкнулся с простой задачкой, но тем не менее самостоятельно решить не.

Преевод числа в денежный формат
Разработайте программу, которая преобразует введенное с клавиатуры дробное число в денежный формат.

>>> import decimal >>> n = decimal.Decimal('768768768.00') >>> ''.format(n).replace(',', ' ') '768 768 768.00' >>>
>>> import decimal >>> n = decimal.Decimal('768768768.0000000000') >>> ''.format(n).replace(',', ' ') '768 768 768.0000000000' >>>

Да нет.. У меня же чисел бесконечное множество и берутся они из базы данных.. Это я пример формата одного из сумм показала..

ЦитатаСообщение от lucher Посмотреть сообщение

Эх. И да и нет. Как с конкретным числом поступить понимаю, а как с данными из БД — нет. Что-то пытаюсь делать, не работает. Сегодня мне объяснят, конечно, что с этим делать, но это значит, что домашку я снова не сделала. ))

Добавлено через 56 минут
Нашла еще кое-что полезное в docs python org

9.4. decimal — Decimal fixed point and floating point arithmetic
.
9.4.7. Recipes¶
Here are a few recipes that serve as utility functions and that demonstrate ways to work with the Decimal class:

1 2 3 4 5 6 7 8 9 10 11 12
def moneyfmt(value, places=2, curr='', sep=',', dp='.', pos='', neg='-', trailneg=''): """Convert Decimal to a money formatted string. places: required number of places after the decimal point curr: optional currency symbol before the sign (may be blank) sep: optional grouping separator (comma, period, space, or blank) dp: decimal point indicator (comma or period) only specify as blank when places is zero pos: optional sign for positive numbers: '+', space or blank neg: optional sign for negative numbers: '-', '(', space or blank trailneg:optional trailing minus indicator: '-', ')', space or blank

Добавлено через 6 часов 14 минут

if I.column() == 5 : return u''.format( self[I.row()].summa ).replace(u',', u' ')

Источник

Читайте также:  Exe file java eclipse

Как разбить число на разряды

Есть число 1234567 .
Как разбить пробелами число по разрядам, чтобы получилось 1 234 567 ?

Ответы (5 шт):

x = 1234567 ''.format(x).replace(',', ' ') >>> '1 234 567' 

Если хочется сгруппировать тысячи в числе в соответствии с текущей локалью пользователя:

>>> import locale >>> locale.setlocale(locale.LC_ALL, '') 'ru_RU.UTF-8' >>> print(locale.format('%d', 1234567, grouping=True)) 1 234 567 

В другой локали, разделитель может быть другим:

>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') 'en_US.UTF-8' >>> print(locale.format('%d', 1234567, grouping=True)) 1,234,567 

Имена локалей и доступная функциональность могут зависеть от системы.

так можно любую маску сделать по количеству разрядов

import re def numberjump_filter(string): string=str(string) #s = re.match("(\d)(\d)(\d)",string) s = re.match("(.*)(\d\d\d)(\d\d\d\d)",string) return s[1]+" "+s[2]+" "+s[3] 

Ещё вариант для разнообразия:

n = str(1234567)[::-1] print(' '.join(n[i:i+3] for i in range(0, len(n), 3))[::-1]) 
  • делаем из числа строку
  • переворачиваем её
  • отрезаем по три символа
  • объединяем их через пробелы
  • ещё раз переворачиваем то, что получилось

Разбиваем на разряды, при этом используем f-string:

x = 1234567890 print(f" руб.".replace("_", " ")) 

Разумеется, надо учитывать, будут ли в тексте ещё символы _ , которые могут быть заменены на пробелы. В этом случае лучше вынести f-string в отдельную переменную и использовать её в коде.

x = 1234567890 fstring = f" руб.".replace("_", " ") print(f"Итого: \n Напишите сумму прописью: ________________") 

Источник

Форматирование чисел в Python

Форматирование строк на самом деле является удивительно большой темой, и у Python есть собственный внутренний мини-язык для обработки множества доступных нам параметров форматирования. В этой статье мы разберем только форматирование чисел. Вы узнаете, как вывести число с нужным количеством знаков после запятой и с разбивкой по три цифры.

Форматирование чисел с округлением

Сначала давайте рассмотрим форматирование чисел с плавающей запятой до заданного уровня округления. Есть два способа сделать это: можно указать нужное количество значащих цифр в целом или количество значащих цифр после десятичной точки. Начнем с первого.

Чтобы указать уровень точности округления, нам нужно использовать двоеточие (:), за которым следует десятичная точка, а также некоторое целое число, представляющее степень точности (количество знаков после запятой). При использовании f-строки мы помещаем всё это после значения, которое хотим отформатировать (в фигурных скобках) . Вместо этого также можно использовать метод format.

x = 4863.4343091 # пример числа с плавающей запятой print(f"") # использование f-строки print("".format(x)) # использование метода format

В обоих случаях мы получаем одинаковый результат: 4863.43.

Читайте также:  Python class attributes self

Как видите, наше довольно длинное число сократилось до шести цифр. Также следует отметить, что данная операция форматирования может производить еще и округление. Если, например, первоначальное число будет иметь значение 4863.435, то выведем в консоль мы 4863.44. Здесь используется округление до ближайшего четного числа (в английском языке banker’s rounding — «округление банкира»).

Если мы укажем меньше цифр, чем у нас есть в целочисленной части нашего числа с плавающей запятой, то получим экспоненциальное представление:

x = 4863.4343091 print(f"") # 4.86e+03

4.86e+03 означает 4,86 ​​x 10³, или 4,86 ​​x 1000, что равно 4860. Глядя на этот результат, мы видим, что получили три значащих цифры, как и хотели.

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

x = 4863.4343091 print(f"") # 4863.434

f в данном случае указывает, что наше число типа float должно отображаться как «число с фиксированной точкой». То есть нам нужно определенное количество десятичных знаков. Мы также можем использовать f без числа, что по умолчанию означает точность 6 цифр после точки:

x = 4863.4343091 print(f"") # 4863.434309

Вывод числа с разбивкой на разряды

Большие числа зачастую удобно писать с использованием символов-разделителей (обычно это запятые, пробелы или точки). Это улучшает их восприятие при чтении. В Python мы можем указать, каким символом разбить цифры числа на классы, указав нужный символ после двоеточия:

x = 1000000 print(f"") # 1,000,000 print(f"") # 1_000_000

При форматировании чисел с плавающей запятой и форматировании с округлением это тоже работает:

x = 4863.4343091 print(f"") # 4,863.434 print(f"") # 4_863.434

Вывод числа в процентах

Мы можем вывести число в качестве процентного значения, просто добавив символ % в конце параметров форматирования вместо f :

questions = 30 correct_answers = 23 print(f"You got correct!") # You got 76.67% correct!

При форматировании числа в процентах точность округления всегда относится к количеству цифр после точки.

Заключение

Вот и все! Мы разобрали самые ходовые способы вывода чисел в нужном формате. Теперь вы знаете, как ограничить количество цифр в выводимом числе, количество знаков в дробной части числа, как вывести число в удобном для чтения виде и в виде процентного значения.

1 комментарий к “Форматирование чисел в Python”

Источник

Оцените статью