【问题标题】:How to smoothly align text output如何平滑对齐文本输出
【发布时间】:2013-04-30 17:15:17
【问题描述】:

在 python 中,this 有什么办法吗?

我有一堆基本上看起来像这样的未对齐文本(从上面的链接问题复制):

column1               column2
-------               -------
sdfsdfsddfsdfsdfsdfsd         343r5
dfgdfgdf             234
gdfgdfgdfgdfgf            645

我希望它看起来像这样:

Name                            Address     Size
foo                            01234567      346
bar                            9abcdef0     1024
something-with-a-longer-name   0000abcd     2048

但我不知道/在 python 中找不到任何类似的文本和字符串修饰符等价物。

【问题讨论】:

  • 如果您将% 字符串运算符替换为printf,C 解决方案将起作用。
  • @MarkRansom 所以你的意思是像print("%8s"....)
  • C 的printf("%-30s %08x %8d\n", names[i], addresses[i], sizes[i]) 的Python 3.x 等效项是print("%-30s %08x %8d" % (names[i], addresses[i], sizes[i]))

标签: python text formatting


【解决方案1】:

在 python 3 (2.6+) 中,您应该使用 str.format() 而不是“%-systax”。

format_str = '{name:30} {address:08x} {size:8d}'
print(format_str.format(name='Name', address='Address', size='Size')
print(format_str.format(name=names[i], address=addresses[i], size=sizes[i]))

有关format() 方法的更多信息,请查看here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 2012-04-11
    • 2012-08-20
    相关资源
    最近更新 更多