Пространственное столбцовое форматирование строки слева для столбцовых данных? - PullRequest
1 голос
/ 31 января 2011
xxxxxxxxxxxxx1.11xxxxxxxxxx1.11xxxxxxxxxxx1.11
xxxxxxxxxxxxx1.11xxxxxxxxxx1.11xxxxxxxxxx11.11
  1. Есть ли какой-нибудь готовый модуль в Python, с которым я мог бы легко справиться выше, например, форматирование 17 знаков, 14 знаков и затем 15 знаков?
  2. Как вы можете получить вещь н.б. небольшая разница с 1.11 и 11.11?

N.b. числа могут быть больше, но не более 10 знаков. Количество строк 46 (=17+14+15) является постоянным.

[Обновление] Обратите внимание, что я использую Python 2.6.5, поэтому выдает ошибку ValueError: zero length field name in format с предложениями.

Ответы [ 3 ]

2 голосов
/ 31 января 2011

Встроено форматирование строки:

Примеры для Python 2.7 / 3.1

>>> '{:x>17}'.format(s)
'xxxxxxxxxxxx11.11'

>>> '{:x>17}{:x>14}{:x>15}'.format(11.1, 11.1, 11.1)
'xxxxxxxxxxxxx11.1xxxxxxxxxx11.1xxxxxxxxxxx11.1'
2 голосов
/ 31 января 2011

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

"{0:>17}".format(11.1)
1 голос
/ 31 января 2011

Кто-то прокомментировал правильный ответ, но удалил его, поэтому я опубликую его здесь. Я удалю это, если он / она отправит это так, кредиты идут к правильному человеку.

('%17.2f%14.2f%15.2f' % (1.11, 1.11, 11.11))
...