无法右对齐元素循环中的打印语句

时间:2019-01-30 16:47:31

标签: python

所以我有以下列表:

population = [60000, 120000, 200000, 5000]

想要这样格式化输出:

Lo: loc_pop
-----------
1     60000
2    120000
3    200000
4      5000

我遇到的问题是我无法正确对齐打印语句,因此所有人口值(不论大小)都按照我上面显示的方式对齐。

代码如下:

population = [123100, 60000, 98300, 220000, 5000]

print("Lo: loc_pop")
print("-----------")
count = 0
for x in range(0, len(population)):
    print(count, ":", " ", population[x])
    count = count + 1

以下是输出:

Lo: loc_pop
-----------
0 :   123100
1 :   60000
2 :   98300
3 :   220000
4 :   5000

输出似乎在“计数”之后和“:”之前添加了一个空格,并且根据数字的数量,它没有正确右对齐。

任何帮助都会很棒!

3 个答案:

答案 0 :(得分:1)

如果您只想以指定格式打印,使用rjust

population = [60000, 120000, 200000, 5000]
header = "Lo: loc_pop"
header_length = len(header)

print(header)
print("-" * header_length)
for i, p in enumerate(population, 1):
    print(i, str(p).rjust(header_length - (len(str(i)) + 1)))

输出

Lo: loc_pop
-----------
1     60000
2    120000
3    200000
4      5000

但是,如果您打算做更多与数据相关的工作,建议您看看pandas

答案 1 :(得分:1)

您可以在Python中使用format来格式化字符串。另外,代码中不需要count变量,因为您可以直接从循环变量中获取值。

population = [123100, 60000, 98300, 220000, 5000]

print("Lo: loc_pop")
print("-----------")

for x in range(0, len(population)):
    print('{}{:>10}'.format(x+1, population[x]))

# Lo: loc_pop 
# ----------- 
# 1     60000 
# 2    120000 
# 3    200000 
# 4      5000

答案 2 :(得分:0)

最简单的解决方案可能是使用熊猫。

import pandas as pd

d = {'loc_pop': [60000, 120000, 200000, 5000]}
df = pd.DataFrame(data=d)
print(df)

结果:

   loc_pop
0    60000
1   120000
2   200000
3     5000