Как заставить точку на разделителе тысяч?

Я уже видел много вопросов о том, как легко это сделать. comma в качестве разделителя тысяч:

>>> format(1123000,',d')
'1,123,000'

Но если я попытаюсь использовать dot сходит с ума:

>>> format(1123000,'.d')
ValueError: Format specifier missing precision

Есть ли простой встроенный в Python независимый от языка способ сделать вывод '1.123.000' вместо '1,123,000'?

Я уже нашел этот ответ на добавление разделителей тысяч к десятичной метке к числу, но он делает это вручную. Может ли это быть проще, чем format(1123000,'.d') а локаль независимая? Или Python не обеспечивает его встроенным?

Eugene Yarmash Используя itertools может дать вам больше гибкости:

>>> from itertools import zip_longest
>>> num = "1000000"
>>> sep = "."
>>> places = 3
>>> args = [iter(num[::-1])] * places
>>> sep.join("".join(x) for x in zip_longest(*args, fillvalue=""))[::-1]
'1.000.000'

2 ответа

Решение

Если вы имеете дело только с целыми числами, вы можете использовать:

x = 123456789
'{:,}'.format(x).replace(',','.')
# returns
'123.456.789'

и если вы хотите добавить несколько десятичных знаков (например: 2), вы можете просто связать несколько операций замены:

      x = 123456789.123456789
'{:,.2f}'.format(x).replace(',','*').replace('.', ',').replace('*','.')
>>> '123.456.789,12'
Другие вопросы по тегам