Python3 .format()对齐用法

时间:2015-02-28 23:45:17

标签: python string python-3.x format

任何人都可以帮我改变这些线的写作吗? 我希望使用.format()让我的代码更优雅,但我真的不知道如何使用它。

print("%3s %-20s %12s" %("Id", "State", "Population"))
print("%3d %-20s %12d" %
            (state["id"],
             state["name"],
             state["population"]))

2 个答案:

答案 0 :(得分:1)

您的格式很容易翻译为str.format() formatting syntax

print("{:>3s} {:20s} {:>12s}".format("Id", "State", "Population"))
print("{id:3d} {name:20s} {population:12d}".format(**state))

请注意,左对齐是通过在宽度前添加<而不是-前缀来实现的,并且字符串的默认对齐方式是左对齐,因此需要>标题字符串和<可以省略,但其他格式密切相关。

通过使用格式本身的键,直接从state字典中提取值。

您也可以直接使用第一种格式的实际输出结果:

print(" Id State                  Population")

演示:

>>> state = {'id': 15, 'name': 'New York', 'population': 19750000}
>>> print("{:>3s} {:20s} {:>12s}".format("Id", "State", "Population"))
 Id State                  Population
>>> print("{id:3d} {name:20s} {population:12d}".format(**state))
 15 New York                 19750000

答案 1 :(得分:0)

你可以写:

print("{id:>3s} {state:20s} {population:>12s}".format(id='Id', state='State', population='Population'))
print("{id:>3d} {state:20s} {population:>12d}".format(id=state['id'], state=state['name'], population=state['population']))

请注意,您必须使用>进行右对齐,因为默认情况下项目是左对齐的。您还可以使用格式化字符串中的项目命名,这样可以更加可读,以查看值在哪里。