如何使用.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}'