Форматирование строки Python - возможно ли использовать лямбду? - PullRequest
1 голос
/ 31 октября 2011

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

print "{:^{}}|"*(self.size).format(for i in range(self.size),6) 
# self size is assumed to be 5 in this example, doesn't work, something along this line is needed though

В основном, делайте это (ниже), но более чистым способом. PS. я знаю, что приведенный ниже пример не работает, но вы меня поняли

print "{:^{}}" * 5 .format(humangrid[0][0],4,humangrid[0][1],4,humangrid[0][2],4,humangrid[0][3],4,humangrid[0][4],4,

Спасибо!

Ответы [ 3 ]

2 голосов
/ 31 октября 2011

Вот мое лучшее предположение:

print '|'.join('{:^6}'.format(i) for i in range(self.size))
...
print ''.join('{:^4}'.format(i) for i in humangrid[0])

Если вы действительно хотите сделать это одним вызовом string.format():

print '|'.join(['{:^6}'*self.size]).format(*range(self.size))
...
print ('{:^4}'*len(humangrid[0])).format(*humangrid[0])
1 голос
/ 31 октября 2011

Предполагая, что вы пытаетесь распечатать двумерный список имен по центру в табличной форме, вот один из способов сделать это:

humangrid = [
    ["john", "jacob", "jezebel"],
    ["mary", "maria", "mel"],
    ["shareen", "sean", "shiva"],
]

cell_width = max(len(y) for x in humangrid for y in x)  # get length of longest name
cell_width += 2  # optional padding

for row in humangrid:
    print "|".join(name.center(cell_width) for name in row)

Бег, который даст вам:

   john  |  jacob  | jezebel 
   mary  |  maria  |   mel   
 shareen |   sean  |  shiva  

Чтобы изменить выравнивание таблицы, просто замените center() на ljust() или rjust().

Можно довольно легко заменить это на .format(), но я считаю, что этот подход гораздо более читабелен.

0 голосов
/ 31 октября 2011

это должно делать то, что вы имеете в виду

print(("{:4}|"*len(humangrid[0])).format(*humangrid[0]))

Идея состоит в том, чтобы просто использовать format(*xxx) для вызова формата с переменным числом аргументов.

...