当前位置: 首页 > 面试题库 >

格式化字符串未使用的命名参数

关志
2023-03-14
问题内容

假设我有:

action = '{bond}, {james} {bond}'.format(bond='bond', james='james')

这将输出:

'bond, james bond'

接下来,我们有:

 action = '{bond}, {james} {bond}'.format(bond='bond')

这将输出:

KeyError: 'james'

是否有一些解决方法来防止发生此错误,例如:

  • 如果keyrror:忽略,则不理会它(但要解析其他人)
  • 比较格式字符串和可用的命名参数,如果缺少则添加

问题答案:

如果您使用的是Python

3.2+,则可以使用str.format_map()。

对于bond, bond

>>> from collections import defaultdict
>>> '{bond}, {james} {bond}'.format_map(defaultdict(str, bond='bond'))
'bond,  bond'

对于bond, {james} bond

>>> class SafeDict(dict):
...     def __missing__(self, key):
...         return '{' + key + '}'
...
>>> '{bond}, {james} {bond}'.format_map(SafeDict(bond='bond'))
'bond, {james} bond'

在Python 2.6 / 2.7中

对于bond, bond

>>> from collections import defaultdict
>>> import string
>>> string.Formatter().vformat('{bond}, {james} {bond}', (), defaultdict(str, bond='bond'))
'bond,  bond'

对于bond, {james} bond

>>> from collections import defaultdict
>>> import string
>>>
>>> class SafeDict(dict):
...     def __missing__(self, key):
...         return '{' + key + '}'
...
>>> string.Formatter().vformat('{bond}, {james} {bond}', (), SafeDict(bond='bond'))
'bond, {james} bond'


 类似资料:
  • 问题内容: 我知道这是一个非常简单的问题,但我不知道该如何使用Google。 我能怎么做 那要用两次?我假设我必须“命名” the ,然后在参数中使用字典,但是我不确定正确的语法吗? 仅供参考,我知道我可以在参数中使用两次,但这不是重点:) 问题答案: 在Python 2.6+和Python 3中,您可以选择使用较新的字符串格式设置方法。 这样可以避免重复输入参数,或者 如果要命名参数。 这是严格

  • 问题内容: 在Python中,格式化字符串时,我可以按名称而不是按位置填充占位符,如下所示: 我想知道这在Java中是否可行(希望没有外部库)? 问题答案: 感谢你的帮助!利用您的所有线索,我编写了例程来完全实现我想要的功能-使用字典使用类似python的字符串格式。由于我是Java新手,因此不胜感激。

  • 主要内容:指定最小输出宽度,指定对齐方式,指定小数精度我们在《 第一个Python程序——在屏幕上输出文本》中讲到过 print() 函数的用法,这只是最简单最初级的形式,print() 还有很多高级的玩法,比如格式化输出,这就是本节要讲解的内容。 熟悉C语言 printf() 函数的读者能够轻而易举学会 Python print() 函数,它们是非常类似的。 print() 函数使用以 开头的转换说明符对各种类型的数据进行格式化输出,具体请看下表。

  • Parameter Position参数位置 Type参数类型 Required必需 Default默认 Description描述 1 string Yes n/a This is what format to use. (sprintf) 使用的格式化方式 This is a way to format strings, such as decimal numbers and such. Us

  • Go对字符串格式化提供了良好的支持。下面我们看些常用的字符串格式化的例子。 package main import "fmt" import "os" type point struct { x, y int } func main() { // Go提供了几种打印格式,用来格式化一般的Go值,例如 // 下面的%v打印了一个point结构体的对象的值 p := p

  • 3.5. 格式化字符串 Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式, 但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。 在 Python 中, 字符串格式化使用与 C 中 sprintf 函数一样的语法。 例 3.21. 字符串的格式化 >>> k = "uid" >>> v = "sa" >>> "%s=%s" % (k, v) 'uid=s