如何在python中创建固定大小的格式化字符串?

ani*_*nio 54 python python-2.7

我想创建一个固定大小的格式化字符串,字段之间的位置固定.一个例子更好地解释,这里有明显3个不同的字段,字符串是固定大小:

XXX        123   98.00
YYYYY        3    1.00
ZZ          42  123.34
Run Code Online (Sandbox Code Playgroud)

如何在python(2.7)中将这种格式应用于字符串?

Lev*_*von 117

当然,使用.format方法.例如,

print '{:10s} {:3d}  {:7.2f}'.format('xxx', 123, 98)
print '{:10s} {:3d}  {:7.2f}'.format('yyyy', 3, 1.0)
print '{:10s} {:3d}  {:7.2f}'.format('zz', 42, 123.34)
Run Code Online (Sandbox Code Playgroud)

将打印

xxx        123    98.00
yyyy         3     1.00
zz          42   123.34
Run Code Online (Sandbox Code Playgroud)

您可以根据需要调整字段大小.请注意,它.format独立print于格式化字符串.我刚用print来显示字符串.简要说明:

10s 格式化一个包含10个空格的字符串,默认情况下左对齐

3d 格式化保留3个空格的整数,默认情况下右对齐

7.2f 格式化一个浮点数,保留7个空格,小数点后2,右边默认为正确.

还有许多其他选项来定位/格式化字符串(填充,左/右对齐等),字符串格式化操作将提供更多信息.

  • 注意:`7.2f`强制精度为2,但7只是_minimum_宽度.对于没有格式化的输入,你可能得不到7的宽度.例如,即使12345.7只有7个字符,`'{:7.2f}'.format(12345.7)`的宽度为8. (7认同)
  • 作为这个问题的后续。你怎么能引入一个变量“nchar”,它指定了第一个字符串包含的字符数?例如,不是在每行中放入您想要的字符串 10 个字符,而是在 format 方法中引入一个包含第一个字符串中所需字符数的变量? (3认同)
  • 正是我在找什么,谢谢! (2认同)
  • @antoine如果我理解你的问题,你可能想看看这个http://stackoverflow.com/questions/10875121/using-format-to-format-a-list-with-field-width-arguments - - 希望有所帮助. (2认同)