Как заставить точку на разделителе тысяч?
Я уже видел много вопросов о том, как легко это сделать. 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'