python中用于标识字符串的定界符_如何在python字符串中打印文字大括号字符并在其上使用.format?...

x = " \{ Hello \} {0} "

print x.format(42)

给我: Key Error: Hello\\\\

我要打印输出: {Hello} 42

#1楼

尽管没有更好的效果,但仅供参考,您也可以这样做:

>>> x = '{}Hello{} {}'

>>> print x.format('{','}',42)

{Hello} 42

例如,当有人要打印{argument}时,它可能很有用。 它可能比'{{{}}}'.format('argument')更具可读性

请注意,在Python 2.7之后,您省略了参数位置(例如,用{}代替{0} )

#2楼

OP写了这个评论:

我试图出于某种目的格式化小型JSON,例如: '{"all": false, "selected": "{}"}'.format(data)以获取类似{"all": false, "selected": "1,2"}

在处理JSON时经常会出现“转义括号”问题。

我建议这样做:

import json

data = "1,2"

mydict = {"all": "false", "selected": data}

json.dumps(mydict)

它比替代方案更清洁,替代方案是:

'{{"all": false, "selected": "{}"}}'.format(data)

当JSON字符串比示例复杂时,最好使用json库。

#3楼

如果您打算做很多事情,最好定义一个实用函数,让您使用任意大括号替代项,例如

def custom_format(string, brackets, *args, **kwargs):

if len(brackets) != 2:

raise ValueError('Expected two brackets. Got {}.'.format(len(brackets)))

padded = string.replace('{', '{{').replace('}', '}}')

substituted = padded.replace(brackets[0], '{').replace(brackets[1], '}')

formatted = substituted.format(*args, **kwargs)

return formatted

>>> custom_format('{{[cmd]} process 1}', brackets='[]', cmd='firefox.exe')

'{{firefox.exe} process 1}'

请注意,这将适用于括号为长度为2的字符串或两个字符串为可迭代的字符串(对于多字符定界符)。

#4楼

原因是{}是.format()的语法,因此在您的情况下.format()无法识别{Hello}因此引发了错误。

您可以使用双大括号{{}}覆盖它,

x = " {{ Hello }} {0} "

要么

尝试使用%s进行文本格式设置,

x = " { Hello } %s"

print x%(42)

#5楼

Python 3.6+(2017年)

在最新版本的Python中,将使用f字符串 (另请参阅PEP498 )。

对于f字符串,应该使用双{{或}}

n = 42

print(f" {{Hello}} {n} ")

产生所需的

{Hello} 42

如果您需要在方括号中解析表达式而不是使用文字文本,则需要三组方括号:

hello = "HELLO"

print(f"{{{hello.lower()}}}")

产生

{hello}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值