2017-12-27 154 views
2

我想打印类似下面使用Python的字符串:逃逸STR格式括号

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

起初我还以为会很容易,但事实并非如此。

这是我第一次尝试:

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

但我得到了以下错误

Traceback (most recent call last): File "", line 1, in KeyError: '"_id"'

然后我尝试:

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

而且我得到这个错误

我设法使其与下面的代码工作:

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

有什么不对海峡格式?

回答

3

你需要逃避你的括号所以Python可以告诉一个格式参数和需要被打印出来,要做到这一点,你可以只复制括号如下字符之间的区别:

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

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

+0

谢谢!但我仍然感到有点奇怪,为什么不像'\'那样用惯用方括号括住 – zhuguowei