文本此代碼的工作:Python的格式不包含JSON
'From {"value": 1}, value={value}'.format(value=1)
失敗像以下(Python的2.7.12和Python 3.6.x的):
Traceback (most recent call last):
File "test_format.py", line 1, in <module>
'From {"value": 1}, value={value}'.format(value=1)
KeyError: '"value"
Python解釋器抱怨"value"
沒有通過format
方法的參數。
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name ::= arg_name ("." attribute_name | "[" element_index "]")*
arg_name ::= [identifier | integer]
attribute_name ::= identifier
element_index ::= integer | index_string
index_string ::= <any source character except "]"> +
conversion ::= "r" | "s"
format_spec ::= <described in the next section>
的replacement_field,在這種情況下,通過一個標識符組成,不應該有引號。下面是一個標識符詞法定義:
identifier ::= (letter|"_") (letter | digit | "_")*
letter ::= lowercase | uppercase
lowercase ::= "a"..."z"
uppercase ::= "A"..."Z"
digit ::= "0"..."9"
所以根據本說明書中,{value}
應被確認爲有效的格式字符串標識符和{"value"}
應該被忽略。
Python似乎不遵循文檔中的規範。密鑰內的任何內容都被接受爲標識符。
爲什麼python的行爲如此?我在這裏錯過了什麼?
你爲什麼試圖首先使用'.format()'創建JSON?使用'json'模塊。 – Barmar
「{」value「}」不能被視爲替換字段,因爲「value」是表達式而不是關鍵字,所以不允許使用引號。 – LuCima
@LuCima看到回溯,Python抱怨名爲'「value」的參數' –