migration - 将 Python 中格式良好的动态表格数据转换为 str.format()

标签 migration python-3.x python

我有以下 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         
  1. 您可以将宽度 maxColumnWidth 表示为 {m},然后 通过 format 参数替换该值。
  2. 无需在 join 中使用方括号(列表理解)。 A 生成器表达式(不带括号)就足够了。

关于migration - 将 Python 中格式良好的动态表格数据转换为 str.format(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7535236/

相关文章:

ruby-on-rails - 添加对现有 Rails 模型的模型引用

python - 在 Python 中使用 -q 标志

python - 如何使用整个单词作为键在 python 中进行翻译

python - 我如何将两个不同字典中的值相乘

python - 翻译我的序列?

python - 在 Windows 7 64 位上从 IDLE 运行 Python 脚本

php - 将 mysql 表映射到具有不同字段名称的新表的最佳方法

sql - 搜索(免费软件)数据库迁移工具

python - 快速API: "ImportError: attempted relative import with no known parent package"

php - 如何通过 cURL 发送大数据?