次の形式の3列形式で表示しているデータがあります。
key: value key: <tab> key: value <tab> key: value
。
以下に例を示します。
p: 1 sl: 10 afy: 4
q: 12 lg: 10 kla: 3
r: 0 kl: 10 klw: 3
s: 67 vw: 9 jes: 3
t: 16 uw: 9 skw: 3
u: 47 ug: 9 mjl: 3
v: 37 mj: 8 lza: 3
w: 119 fv: 8 fxg: 3
x: 16 fl: 8 aew: 3
ただし、次のように、数値がすべて正しく揃っていればよいのですが。
a: 1
b: 12
c: 123
Pythonでこれを行うにはどうすればよいですか?
私が持っている既存の印刷コードは次のとおりです。
print(str(chr(i+ord('a'))) + ": " + str(singleArray[i]) + "\t" +
str(doubleArray[i][0]) + ": " + str(doubleArray[i][1]) + "\t" +
str(tripleArray[i][0]) + ": " + str(tripleArray[i][1]))
In Python 2.5 use rjust(strings)。また、 string formating in python単に連結する代わりに、文字列:以下のrjustおよび文字列フォーマットの簡単な例:
width = 10
str_number = str(ord('a'))
print 'a%s' % (str_number.rjust(width))
python 2.6+(および3の標準メソッド))では、文字列フォーマットの「推奨」メソッドはstring.format()を使用することです(完全なドキュメントがあります- ここ )右揃えは
"a string {0:>5}".format(foo)
ただし、これは5つの場所を使用します
"a string {0:>{1}}".format(foo, width)
も有効であり、.format()に渡された値の幅を使用します。
python string format:'%widths'
ここで、幅は整数です
>>> '%10s' % 10
' 10'
>>> '%10s' % 100000
' 100000'
Python 3.6では、 Literal String Interpolation を使用できます。
_width = 5
number = 123
print (f'{number:>{width}}')
_
あるいは単に:
_number = 123
print (f'{number:>5}')
_
str.format()
構文の多くを再利用します。
これが将来的に好ましい方法になると思います。
数値の上限がわかっている場合は、"%<lenght>d" % n
。これらすべての計算が行われ、(char、num)のリストが与えられた場合:
mapping = ((chr(i+ord('a')), singleArray[i]),
(doubleArray[i][0],doubleArray[i][1]),
(tripleArray[i][0],tripleArray[i][1])
)
for row in mapping:
print "%s: %3d" % row