Найти - Пользователи
Полная версия: Форматирование вывода чисел в будущих версиях
Начало » Python для экспертов » Форматирование вывода чисел в будущих версиях
1
alien308
Встретил здесь утверждение “Однако, со временем, форматирование строк будет удалено из языка”. Как в таком случае форматировать при выводе чисел? Например что будет вместо:
print '%2d  %8.3f %12.6f ' % (i, x, y)
alien308
Спасибо, вроде ничего не забыли, хотя опять синтаксис новый
А модуль есть для версий до 2.6, чтобы к коду добавлять и всё по новому делать?
py.user.next
alien308
вроде ничего не забыли, хотя опять синтаксис новый
http://www.python.org/dev/peps/pep-3101/
в обосновании написано, почему отказываются от старого стиля
используя .format(), есть возможность использовать и отдельные аргументы, и кортеж, и словарь одновременно
также метод .format() можно переопределять (заменять своим), тем самым редактируя спецификаторы (или добавляя новые)
alien308
Вот это из ссылка работает:
import datetime
"Today is: {0:%a %b %d %H:%M:%S %Y}".format(datetime.datetime.now())
А это нет
>>> "{0:%f}".format(10.11111)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Invalid conversion specification
Недопилили?
python2.7
adray
alien308
Недопилили?
Для объекта datetime определен собственный спецификатор формата, в PEP3101 про это написано
py.user.next
alien308
>>> "{0:%f}".format(10.11111)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Invalid conversion specification

>>> '{0:f}'.format(10.5)
'10.500000'
>>>
alien308
Спасибо, для реального форматирования надо так:
>>>'{0:6.2f}'.format(10.5)
' 10.50'
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB