python - Python 格式字符串中的宽度变量

标签 python string format

为了打印表格数据的标题,我只想使用一种格式字符串 line 和一种列宽规范 w1, w2, w3 (甚至 w = x, y, z 如果可能的话。)

我看过this但是 tabulate 等不要让我像 format 那样证明列中的内容。

这种方法有效:

head = 'eggs', 'bacon', 'spam'  
w1, w2, w3 = 8, 7, 10  # column widths  
line = '  {:{ul}>{w1}}  {:{ul}>{w2}}  {:{ul}>{w3}}'  
under = 3 * '='  
print line.format(*head, ul='', w1=w1, w2=w2, w3=w3)  
print line.format(*under, ul='=', w1=w1, w2=w2, w3=w3)  

我必须在格式字符串中使用宽度为 {w1}{w2} 的个人名称吗?像 {w[1]}, {w[2]} 这样的尝试,给出 KeyErrorkeyword can't be an表达式

我还认为 w1=w1, w2=w2, w3=w3 不是很简洁。有没有更好的办法?

最佳答案

现在使用 f 字符串格式变得非常容易。

如果你正在使用

print(f'{token:10}')

并且您希望 10 成为另一个变量(例如所有标记的最大长度),您可以这样写

print(f'{token:{maxTokenLength}}')

换句话说,将变量包含在 {}


在您的特定情况下,您只需要这个。

head = 'eggs', 'bacon', 'spam'  
w1, w2, w3 = 8, 7, 10  # column widths  

print(f'  {head[0]:>{w1}}  {head[1]:>{w2}}  {head[2]:>{w3}}')
print(f'  {"="*w1:>{w1}}  {"="*w2:>{w2}}  {"="*w3:>{w3}}')

产生

      eggs    bacon        spam
  ========  =======  ==========

关于python - Python 格式字符串中的宽度变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38159243/

相关文章:

python - Deep Dream Code 不会生成可识别的模式

python - Pip 正在尝试使用与安装的不同版本的 python

python - 在 numpy 复合数据集中填充值很慢;为什么?

java - 转义序列无效(有效的是\b\t\n\f\r\”\'\\)"语法错误

javascript indexOf 奇怪的行为

java - Java 日期格式解析错误

python - 转换 numpy.ndarray.tolist 时丢失数据类型?

java - 安卓工作室 :error: illegal character: '\u2028'

css - Dreamweaver CS6格式源码CSS在:后添加空格

c - 在 printf 中参数化格式说明符