x = " \{ Hello \} {0} " print x.format(42)
給我: Key Error: Hello\\\\
json
我要打印輸出: {Hello} 42
函數
儘管沒有更好的效果,但僅供參考,您也能夠這樣作: spa
>>> x = '{}Hello{} {}' >>> print x.format('{','}',42) {Hello} 42
例如,當有人要打印{argument}
時,它可能頗有用。 它可能比'{{{}}}'.format('argument')
更具可讀性 firefox
請注意,在Python 2.7以後,您省略了參數位置(例如,用{}
代替{0}
) code
OP寫了這個評論: orm
我試圖出於某種目的格式化小型JSON,例如:
'{"all": false, "selected": "{}"}'.format(data)
以獲取相似{"all": false, "selected": "1,2"}
字符串
在處理JSON時常常會出現「轉義括號」問題。 get
我建議這樣作: cmd
import json data = "1,2" mydict = {"all": "false", "selected": data} json.dumps(mydict)
它比替代方案更清潔,替代方案是: string
'{{"all": false, "selected": "{}"}}'.format(data)
當JSON字符串比示例複雜時,最好使用json
庫。
若是您打算作不少事情,最好定義一個實用函數,讓您使用任意大括號替代項,例如
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的字符串或兩個字符串爲可迭代的字符串(對於多字符定界符)。
緣由是{}
是.format()
的語法,所以在您的狀況下.format()
沒法識別{Hello}
所以引起了錯誤。
您能夠使用雙大括號{{}}覆蓋它,
x = " {{ Hello }} {0} "
要麼
嘗試使用%s
進行文本格式設置,
x = " { Hello } %s" print x%(42)
Python 3.6+(2017年)
在最新版本的Python中,將使用f字符串 (另請參閱PEP498 )。
對於f字符串,應該使用雙{{
或}}
n = 42 print(f" {{Hello}} {n} ")
產生所需的
{Hello} 42
若是您須要在方括號中解析表達式而不是使用文字文本,則須要三組方括號:
hello = "HELLO" print(f"{{{hello.lower()}}}")
產生
{hello}