是否有更灵活的方法来重构以下字符串格式代码

时间:2010-11-30 01:08:40

标签: python

我需要将字符串格式化为:

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

由于cat的数量是一个变量,这就是我的代码。

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 个答案:

答案 0 :(得分: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()

答案 1 :(得分: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)