如何使用.format()打印字符串,并在替换的字符串周围打印字面量大括号

14 投票
1 回答
17934 浏览
提问于 2025-04-17 07:25

可能重复的问题:
我该如何在Python字符串中打印字面上的“{}”字符,同时又使用.format()?

基本上,我想使用.format(),像这样:

my_string = '{{0}:{1}}'.format('hello', 'bonjour')

然后让它匹配:

my_string = '{hello:bonjour}' #this is a string with literal curly brackets

不过,第一段代码给我报错了。

大括号很重要,因为我在用Python通过文本命令和一个软件进行沟通。我无法控制这个软件期望什么样的格式,所以我必须在我这边把所有格式搞清楚。这个软件用大括号把字符串包起来,以确保字符串中的空格被当作一个整体,而不是多个参数——就像你在文件路径中通常用引号一样。

我现在使用的是旧的方法:

my_string = '{%s:%s}' % ('hello', 'bonjour')

这当然是可以的,但用.format()看起来更容易理解。当我在一个字符串中发送五个或更多变量的命令时,易读性就变得非常重要。

谢谢!

1 个回答

29

这是新的样式:

>>> '{{{0}:{1}}}'.format('hello', 'bonjour')
'{hello:bonjour}'

不过我觉得这种转义方式有点难读,所以我更喜欢换回旧的样式,这样就不用转义了:

>>> '{%s:%s}' % ('hello', 'bonjour')
'{hello:bonjour}'

撰写回答