79

固定幅のテキスト列が必要ですが、文字列はすべて左ではなく右にパディングされています!!?

 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
4

8 に答える 8

127

左揃えにするために、サイズ要件の前にプレフィックスを付けることができます-

sys.stdout.write("%-6s %-50s %-25s\n" % (code, name, industry))
于 2012-10-02T04:08:41.627 に答える
50

このバージョンはstr.formatメソッドを使用します。

Python2.7以降

sys.stdout.write("{:<7}{:<51}{:<25}\n".format(code, name, industry))

Python2.6バージョン

sys.stdout.write("{0:<7}{1:<51}{2:<25}\n".format(code, name, industry))

アップデート

以前は、ドキュメントに%演算子が将来言語から削除されるという記述がありました。このステートメントはドキュメントから削除されました

于 2012-10-02T04:24:49.530 に答える
29
sys.stdout.write("%-6s %-50s %-25s\n" % (code, name, industry))

余談ですが、幅を可変にすることができます*-s

>>> d = "%-*s%-*s"%(25,"apple",30,"something")
>>> d
'apple                    something                     '
于 2012-10-02T04:05:08.727 に答える
9

-50%の代わりに使用する+50%と、左に揃えられます。

于 2012-10-02T04:06:41.223 に答える
6

もう少し読みやすい代替ソリューション:
sys.stdout.write(code.ljust(5) + name.ljust(20) + industry)

ljust(#ofchars)固定幅の文字を使用し、他のソリューションのように動的に調整されないことに注意してください。

(また+、現代の Python では、 による文字列の追加が以前よりも大幅に高速になっていることに注意+して''.join(...)ください。

于 2013-05-10T07:39:47.450 に答える
4

これは私のpythonスクリプトで機能しました:

print "\t%-5s %-10s %-10s %-10s %-10s %-10s %-20s"  % (thread[0],thread[1],thread[2],thread[3],thread[4],thread[5],thread[6])
于 2013-11-12T17:14:02.477 に答える