фиксированная ширина форматирования строки Python - PullRequest
2 голосов
/ 08 декабря 2011

Я хочу поместить группу чисел с плавающей точкой в ​​таблицу фиксированной ширины. То есть я хочу использовать максимум 12 символов. Я хочу использовать минимум 10 десятичных знаков (если доступно); однако, если 10 десятичных знаков занимают более 12 символов, то округляется. Моей первоначальной мыслью было попробовать что-то вроде этого

# I only want 12 characters used total

num1 = 0.04154721841
num2 = 10.04154721841

# not what I want
print "{:<12.11g}".format((num1))
# what I want
print "{:<12.10f}".format((num1))

# not what I want
print "{:<12.10f}".format((num2))
# what I want
print "{:<12.11g}".format((num2))

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

1 Ответ

5 голосов
/ 08 декабря 2011

Я не уверен, что это то, что вы ищете, так как это не полностью достигается с помощью строки формата, однако, вы можете просто использовать нарезку строк, чтобы обрезать концевые символы, когда вещи становятся слишком длинными:

num1 = 0.04154721841
num2 = 10.04154721841
num3 = 1002.04154721841

print "{0:<12.11g}".format(num1)[:12]
print "{0:<12.11g}".format(num2)[:12]
print "{0:<12.11g}".format(num3)[:12]

выводит:

0.0415472184
10.041547218
1002.0415472

Кроме того, я бы сказал, что вы должны просто написать функцию, хотя я не специалист по str.format, поэтому я могу пропуститьчто-то.

...