2010-11-30 37 views
0

我需要爲波紋管格式的字符串:是否有重新的因素更加靈活的方式,以下字符串格式化代碼

print "%8s%-32s%-32s%-32s" % (' ', 'CAT A', 'CAT B', 'CAT C') 

由於貓的數量是一個變量,這裏是我的代碼。

values = [' ', ] 
format = "%8s" 
# width is a variable 
width = house.get_width() 

for cat in range(house.get_cat_count()): 
    format = format + '%-' + str(width) + 's' 
    values.append('CAT ' + chr(ord('A') + operator)) 

# format is "%8s%-32s%-32s%-32s" 
# values is [' ', 'CAT A', 'CAT B', 'CAT C'] 
${format % tuple(values)} 

該代碼看起來並不簡短和敏捷。有沒有其他的方式來編碼python風格?

回答

2

如何:

result = ' ' * 8 
width = house.get_width() - 4 # subtract 4 to allow for 'CAT ' 
for i in range(house.get_cat_count()): # or xrange 
    result += 'CAT %-*c' % (width, ord('A') + i) 

注意使用*來指示變量寬度說明,以及%c格式說明對於單個字符以避免使用chr()

0

爲什麼不:

" "*8 + "%-32s"*len(values) % tuple(values) 

則:

values=["CAT "+chr(65+i) for i in house.get_cat_count()] 
" "*8 + ("%%-%ds" % house.get_width()) * len(values) % tuple(values) 
+0

-32也應該變量而不是硬編碼。 – 2010-11-30 01:22:47

相關問題