#python #string #format
#python #строка #форматирование
Вопрос:
Я пытаюсь заставить Python реплицировать некоторый вывод FORTRAN реальных значений. Мой FORTRAN выводит реальное значение как «31380».. Я пытаюсь воспроизвести то же самое в Python — обратите внимание, что, хотя у меня нет десятичных знаков, я действительно хочу, чтобы была напечатана десятичная точка (точка). Мой текущий код
htgm=31380.
print '{:6.0f}'.format(htgm)
что дает «31380». Что я делаю не так?
Комментарии:
1. Как насчет добавления
.
в строку формата?'{:6.0f}.'.format(htgm)
Ответ №1:
Язык форматирования Python включает в себя «альтернативную» форму для чисел с плавающей запятой, которая принудительно вводит десятичную точку, используя ‘#’ в строке формата:
>>> htgm=31380.
>>> format(htgm, '#.0f')
'31380.'
Это то, что, я думаю, вы ищете.
Я думал #g
, это будет то, что вы хотели, но по какой-то причине python добавляет 0
обратно:
>>> htgm=31380.
>>> format(htgm, 'g')
'31380'
>>> format(htgm, '#g')
'31380.0'
Комментарии:
1. это доступно только в Python 3?
2. Хотя
#
существует с Py> 2.6, похоже, что альтернативная форма для чисел с плавающей запятой была добавлена только в Py3.
Ответ №2:
Невозможно сделать это на Python, сохраняя тип htgm
as float
. Однако, если вы согласны с тем, чтобы сделать это как str
, вы можете сделать:
htgm=31380.
'{0:.0f}.'.format(htgm)
# returns: '31380.'
# OR, even simply
'{}.'.format(int(htgm))
Ответ №3:
Когда вам нужно отобразить номер, используйте:
print(str(htgm)[:-1])
Это обозначение срежет последний ‘0’.