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

Sim*_*erg 12 python string formatting string-formatting curly-brackets

可能重复:
如何在python字符串中打印文字"{}"字符并在其上使用.format?

基本上,我想使用.format(),如下所示:

my_string = '{{0}:{1}}'.format('hello', 'bonjour')
Run Code Online (Sandbox Code Playgroud)

并匹配:

my_string = '{hello:bonjour}' #this is a string with literal curly brackets
Run Code Online (Sandbox Code Playgroud)

但是,第一段代码给了我一个错误.

大括号很重要,因为我使用Python通过基于文本的命令与一个软件进行通信.我无法控制fosoftware所期望的格式,因此我最终整理出所有格式是至关重要的.它在字符串周围使用大括号来确保字符串中的空格被解释为单个字符串,而不是多个参数 - 就像通常使用文件路径中的引号一样.

我目前正在使用旧方法:

my_string = '{%s:%s}' % ('hello', 'bonjour')
Run Code Online (Sandbox Code Playgroud)

这当然有效,但.format()似乎更容易阅读,当我在一个字符串中发送包含五个或更多变量的命令时,可读性成为一个重要问题.

谢谢!

Ray*_*ger 26

这是新的风格:

>>> '{{{0}:{1}}}'.format('hello', 'bonjour')
'{hello:bonjour}'
Run Code Online (Sandbox Code Playgroud)

但我认为转义有点难以阅读,所以我更愿意切换回较旧的风格以避免转义:

>>> '{%s:%s}' % ('hello', 'bonjour')
'{hello:bonjour}'
Run Code Online (Sandbox Code Playgroud)