如何在python字符串中打印文字大括號字符並在其上使用.format?

x = " \{ Hello \} {0} "
print x.format(42)

給我: Key Error: Hello\\\\ json

我要打印輸出: {Hello} 42 函數


#1樓

儘管沒有更好的效果,但僅供參考,您也能夠這樣作: spa

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

例如,當有人要打印{argument}時,它可能頗有用。 它可能比'{{{}}}'.format('argument')更具可讀性 firefox

請注意,在Python 2.7以後,您省略了參數位置(例如,用{}代替{0}code


#2樓

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庫。


#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}
相關文章
相關標籤/搜索