Возможна ли фортраноподобная печать в python? - PullRequest
5 голосов
/ 25 февраля 2010

возможно ли каким-то образом "напечатать" на python таким же образом, как это?

1     4.5656
2    24.0900
3   698.2300
4    -3.5000

Значит, десятичные точки всегда находятся в одном и том же столбце, и мы всегда получаем 3 или n десятичных чисел?

Спасибо

Ответы [ 6 ]

9 голосов
/ 25 февраля 2010
>>> '%11.4f' % -3.5
'    -3.5000'

или новый стиль форматирования:

>>> '{:11.4f}'.format(-3.5)
'    -3.5000'

подробнее о спецификаторах формата в документации .

5 голосов
/ 29 июня 2011

Вы также можете взглянуть на библиотеку fortranformat в PyPI или страницу проекта , если хотите полностью воссоздать текстовый ввод FORTRAN.

Если у вас есть какие-либо вопросы, пришлите мне письмо (я написал).

0 голосов
/ 12 мая 2014

Fortran io полностью отличается от стиля C io.

Пойдите для пакета Брандана Фортранформат.

https://pypi.python.org/pypi/fortranformat

easy_install fortranformat

Это позволяет создавать загадочные старые входные файлы на фортране с гораздо меньшими пробами и ошибками, чем при попытке использовать форматирование строк в стиле C.

0 голосов
/ 25 февраля 2010

Вы можете использовать string.rjust () следующим образом:

a = 4.5656
b = 24.0900
c = 698.2300
d = -3.5000

a = "%.4f" % a
b = "%.4f" % b
c = "%.4f" % c
d = "%.4f" % d

l = max(len(a), len(b), len(c), len(d))

for i in [a, b, c, d]:
        print i.rjust(l+2)

Что дает:

~ $ python test.py 
    4.5656
   24.0900
  698.2300
   -3.5000
0 голосов
/ 25 февраля 2010
print "%10.3f" % f

выровняет число f по правому краю (кроме этого: %-10.3f будет выровнено по левому краю). Строка будет выровнена по правому краю до 10 символов (больше не работает с> 10 символами) и ровно 3 десятичных знака. Итак:

f = 698.230 # <-- 7 characters when printed with %10.3f
print "%10.3f" % f # <-- will print "   698.2300" (two spaces)

В качестве теста для вашего примера набора сделайте следующее:

print "\n".join(map(lambda f: "%10.3f" % f, [4.5656, 24.09, 698.23, -3.5]))
0 голосов
/ 25 февраля 2010
for i in [(3, 4.534), (3, 15.234325), (10,341.11)]:
...     print "%5i %8.4f" % i
... 
    3   4.5340
    3  15.2343
   10 341.1100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...