我需要将字符串格式化为:
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
样式进行编码?
答案 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)