如何左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调整。