python - 使用 .format 格式化字符串时检索预期的键名

标签 python python-3.x string-formatting

<分区>

如何从字符串中检索预期的格式键名称?

假设我有:

"This string expects {expected}"

如果我输入了错误的键名,python 会抛出一个 KeyError,显示预期的名称。

"This string expects {expected}".format(whoops="wrong key")
KeyError: 'expected'

有没有一种方法可以在不使用正则表达式或(呃)故意抛出 KeyError 的情况下对此进行测试?我查看了字符串文档,但没有发现任何问题。

编辑 1:

我不想抑制错误,也不想默默地用无/空字符串填充它。我想使用预期的键名来正确格式化字符串。

我可以通过将字符串映射到字典中的键名来在上游对其进行返工,但如果有办法在事后找到它,我希望避免这种情况。

正则表达式将是一个很好的解决方案,但在这一点上我只是好奇胜过一切。

最佳答案

您可以使用 Formatter.parse像那样:

>>> s="{a} {b} {c}"
>>> list(string.Formatter.parse("",s))
[('', 'a', '', None), (' ', 'b', '', None), (' ', 'c', '', None)]
>>> [t[1] for t in string.Formatter.parse("",s)]
['a', 'b', 'c']

关于python - 使用 .format 格式化字符串时检索预期的键名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39152675/

相关文章:

python - 负数和正数之间的按位 AND (&)?

Python:查找列表列表中任意长度组合最常出现的次数

python 元组打印问题

python - 使用递归验证二叉搜索树

python - Google Colab 在下载数据集或将新包导入 colab notebook 时是否会使用我的互联网流量?

python - 使用 `dask.merge()` 时发生 key 错误

php - 将数字转换为国际,PHP

python - 字典解包操作符**

python - 不同的除法结果python

android - 为电话号码格式化 EditText View