我有一些数据以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]))
答案 0 :(得分:75)
在python 2.6+(它是3中的标准方法)中,字符串格式化的“首选”方法是使用string.format()(可以找到完整的文档here)。 正确的理由可以用
完成"a string {0:>5}".format(foo)
这将使用5个位置,但是
"a string {0:>{1}}".format(foo, width)
也有效,将使用传递给.format()的值width。
答案 1 :(得分:34)
在Python 2.5中使用rjust(在字符串上)。另外,尝试习惯python中的string formatting而不是仅仅连接字符串。以下是rjust和字符串格式的简单示例:
width = 10
str_number = str(ord('a'))
print 'a%s' % (str_number.rjust(width))
答案 2 :(得分:25)
使用python字符串格式:'%widths'
其中width是一个整数
>>> '%10s' % 10
' 10'
>>> '%10s' % 100000
' 100000'
答案 3 :(得分:3)
在Python 3.6中,你可以使用Literal String Interpolation,这是更少 详细而且可能更直观易用:
int b=0;
while(b<=888) {
b++;
}
或者只是:
width = 5
number = 123
print (f'{number:>{width}}')
它重用了number = 123
print (f'{number:>5}')
语法的大部分内容。
我想/希望这将是未来的首选方式。
答案 4 :(得分:2)
如果您知道数字的上限,则可以使用"%<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