2014-09-16 2 views
0

У меня есть кортеж, содержащий как значения строки, так и значения float (которые считываются из txt-файла и вычисляются мной, соответственно), и я хочу записать его в другой файл txt.Как отформатировать строку в python?

variables = (line.split()[0],line.split()[1], velocity) #velocity is a floating number, others are #string 
output_file.write('%s %s %4.2f \n' % variables) 

Эти линии находятся в цикле. Я хочу, чтобы каждая переменная в каждой строке выравнивалась по правому краю. Как я могу это сделать?

Обратите внимание, что строковые элементы не имеют одинакового символа в каждой строке.

ответ

2

У Python есть несколько способов форматирования строк. В форме, которую вы используете, вы получаете правильное выравнивание, задавая длину поля и добавочное дополнение. Python right выравнивается, чтобы по умолчанию соответствовать длине поля. У вашего расчета с плавающей точкой уже есть длина поля, поэтому просто выберите длину для строк. Его легко, если у вас уже есть максимальный размер поля. Ниже приведен пример из 10 пробелов в строке:

'%10s %10s %4.2f \n' % variables 
+0

проблема заключается в следующем: я использовал что-то вроде% 5.2f для float. Так он пишет 99.48. Но в следующей строке число равно 100.34. Следующие поплавки не выровнены по правому краю. Мне нужно, чтобы переменные float были выровнены по правому краю :(Как я могу это исправить? – wthimdh

+1

@tgb, в 5.2, 5 - это общий размер, а 2 - это число цифр после десятичного числа. Так как 100.34 уже 6 символов, вы вы переполняете свой размер форматирования. Попробуйте что-то вроде% 10.2f, чтобы увидеть разницу. – tdelaney

+0

Большое вам спасибо ^^ Последний вопрос касается форматирования строк. Строки должны быть выровнены по левому краю, а плавающие числа должны быть выровнены по правому краю Теперь я покрыл поплавки. Но любой намек на выравнивание строк справа? – wthimdh

Смежные вопросы