【问题标题】:Python String formatting - building a table with fixed width columnsPython 字符串格式化 - 构建具有固定宽度列的表格
【发布时间】:2018-07-08 21:19:50
【问题描述】:

我正在尝试用不同长度的字符串构建一个表格

Bob    | Smith    | UK      | Sales
James  | Hobson   | Ireland | Accounts

所有的“|”整齐排列

已尝试使用"{:<10s} | {:<10s} | {:<10s} | {:<10s}".format(fn, ln, loc, div) 但我明白了

Bob    | Smith    | UK      | Sales
James    | Hobson    | Ireland       | Accounts

所以{:<10s} 似乎在设置填充而不是字符串长度,有没有一种简单的方法来固定字符串的长度,以便列正确排列?

【问题讨论】:

  • 我无法重现您的错误。您是否对两行应用了相同的格式字符串?
  • 是的 - 我正在使用 for 循环将嵌套列表中的值放入表中
  • Your code works, as you can see on repl.it<10 就是你想要的。无论您遇到什么问题,它都存在于您没有向我们展示的代码的其他部分。
  • 您在某些字符串中是否有任何退格字符'\b'?他们可以欺骗format()
  • 您是否可能以比例字体显示它(例如,通过将其放在 tkinter 小部件中而不是将其打印到控制台),或者将其插入某些 HTML 或其他格式保留空格或类似的东西?

标签: python string formatting


【解决方案1】:

我会修正“|”的位置在输入其余数据之前,一串空白中的字符。所以,假设你想要一个'|'沿着字符串的每组索引间隙,您可以使用insert() 放置'|'在每个设置数量的索引分开。它可能看起来像这样:

string = ""
for i in SizeofString:
    string.append(' ')
for i in NumberofPipesYouWant:
    string.insert('|', indexGap*i)

这就是我个人的做法,我不确定是否存在更直接的解决方案。

【讨论】:

  • 没有str.insert 方法。更一般地说,字符串是不可变的。附加一个空格 N 次而不是附加 N 个空格是愚蠢的。如果这可行,它将以SizeofString + NumberofPipesYouWant long 而不是SizeofString long 的字符串结束。而且您甚至不会尝试插入实际数据。
  • 对不起,最近没有使用 Python 并且完全忘记了字符串的下标更有意义。但是,如果您使用它们而不是 append 和 insert(再次忘记 insert 仅适用于列表),那肯定可以正常工作吗?
  • 没有。你不能通过下标来改变字符串,就像通过插入和追加一样;你只会得到TypeError 而不是AttributeError。此外,您仍然会遇到所有其他问题 - 包括您的输出中甚至没有所需的字符串,这使得整个事情变得毫无意义。
  • 哇,抱歉,我不知道我是怎么不知道这一点的。道歉。
猜你喜欢
  • 2012-01-15
  • 1970-01-01
  • 2018-01-28
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
相关资源
最近更新 更多