【问题标题】:escaping str format brackets转义 str 格式括号
【发布时间】:2017-12-27 15:07:35
【问题描述】:

我想使用 Python 打印如下字符串:

{"_id":ObjectId("5a43ae09e2bae06ddd400dfc")}

起初我认为这很容易,但事实并非如此。

这是我的第一次尝试:

'{"_id":ObjectId("{}")}'.format('5a43ae09e2bae06ddd400dfc')

但我收到以下错误

Traceback(最近一次调用最后一次): 文件“”,第 1 行,在 KeyError: '"_id"'

然后我尝试了:

'\{"_id":ObjectId("{}")\}'.format('5a43ae09e2bae06ddd400dfc')

我得到了这个错误

Traceback(最近一次调用最后一次): 文件“”,第 1 行,在 KeyError: '"_id"'

我设法使它与以下代码一起工作:

'{"_id":ObjectId("%s")}' %('5a43ae09e2bae06ddd400dfc')
'{"_id":ObjectId("5a43ae09e2bae06ddd400dfc")}'

str 格式有什么问题?

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    您需要转义括号,以便 Python 可以区分格式参数和需要打印的字符,为此您只需复制括号,如下所示:

    print('{{"_id":ObjectId("{}")}}'.format('5a43ae09e2bae06ddd400dfc'))
    

    这里有更多信息:https://docs.python.org/3/library/string.html#formatstrings

    【讨论】:

    • 谢谢!但是我还是觉得有点奇怪,为什么不像常用的那样用'\'转义括号
    猜你喜欢
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 2012-02-16
    • 2012-10-28
    • 2016-07-05
    • 2023-03-30
    相关资源
    最近更新 更多