我有以下
Python 2.x代码,它为表格数据生成标题行:
headers = ['Name', 'Date', 'Age']
maxColumnWidth = 20 # this is just a placeholder
headerRow = "|".join( ["%s" % k.center(maxColumnWidth) for k in headers] )
print(headerRow)
此代码输出以下内容:
Name | Date | Age
这正是我想要的 – 数据格式很好,并以宽度maxColumnWidth的列为中心. (maxColumnWidth在程序的早期计算)
根据the Python docs,您应该能够在Python3中使用大括号字符串格式执行相同的操作,如下所示:
headerRow = "|".join( ["{:^maxColumnWidth}".format(k) for k in headers] )
但是,当我这样做时,我得到以下内容:
ValueError: Invalid conversion specification
但是,如果我这样做:
headerRow = "|".join( ["{:^30}".format(k) for k in headers] )
一切正常.
我的问题是:如何在格式字符串中使用变量而不是整数?:
headerRow = "|".join( ["{:^maxColumnWidth}".format(k) for k in headers] )
最佳答案
headers = ['Name', 'Date', 'Age']
maxColumnWidth=21
headerRow = "|".join( "{k:^{m}}".format(k=k,m=maxColumnWidth) for k in headers )
print(headerRow)
产量
Name | Date | Age
>您可以将宽度maxColumnWidth表示为{m},然后
通过format参数替换该值.
>无需在连接中使用括号(列表理解).一个
生成器表达式(不带括号)就足够了.