如何左alignment固定宽度的string?
我只想固定宽度的文本列,但string都是正确填充,而不是左!
sys.stdout.write("%6s %50s %25s\n" % (code, name, industry))
产生
BGA BEGA CHEESE LIMITED Food Beverage & Tobacco BHP BHP BILLITON LIMITED Materials BGL BIGAIR GROUP LIMITED Telecommunication Services BGG BLACKGOLD INTERNATIONAL HOLDINGS LIMITED Energy
但我们想要
BGA BEGA CHEESE LIMITED Food Beverage & Tobacco BHP BHP BILLITON LIMITED Materials BGL BIGAIR GROUP LIMITED Telecommunication Services BGG BLACKGOLD INTERNATIONAL HOLDINGS LIMITED Energy
这个版本使用str.format方法。
Python 2.7和更新
sys.stdout.write("{:<7}{:<51}{:<25}\n".format(code, name, industry))
Python 2.6版本
sys.stdout.write("{0:<7}{1:<51}{2:<25}\n".format(code, name, industry))
UPDATE
以前在文档中有一个关于将来从语言中删除%运算符的声明。 该声明已从文档中删除 。
您可以在大小要求前添加-
左alignment:
sys.stdout.write("%-6s %-50s %-25s\n" % (code, name, industry))
sys.stdout.write("%-6s %-50s %-25s\n" % (code, name, industry))
在旁边注意,你可以使*-s
的宽度variables
>>> d = "%-*s%-*s"%(25,"apple",30,"something") >>> d 'apple something '
使用-50%
而不是+50%
他们将被alignment到左侧..
这一个在我的Python脚本中工作:
print "\t%-5s %-10s %-10s %-10s %-10s %-10s %-20s" % (thread[0],thread[1],thread[2],thread[3],thread[4],thread[5],thread[6])
一个更可读的替代解决scheme:
sys.stdout.write(code.ljust(5)+name.ljust(20)+industry)
请注意, ljust(#ofchars)
使用固定宽度的字符,不像其他解决scheme那样dynamic调整。