2013-10-14 96 views
3

我剛剛嘗試在包含許多隨機大括號的文本上使用Python的.format()。它不起作用,因爲.format()試圖替換單個大括號內的所有內容。做一些閱讀後,好像我有三個壞的選擇:替代舊字符串格式的Python

  1. 雙所有這些隨機括號 - 這看起來會比較難看
  2. 使用舊的字符串格式化% - 這看來似乎是走出去的風格
  3. 導入一個模板引擎 - 這看起來像是過度殺傷

什麼是最好的選擇?有更好的選擇嗎?

+4

問自己一個很重要的問題。你需要什麼'.format()'作爲? – Tadeck

+0

'%'確實強烈折舊?我仍然可以在我周圍看到它的用戶@@。 – Jokester

+1

你可以插入'%s'等等,'替換它。 –

回答

1

這裏有一個簡單的方法:

>>> my_string = "Here come the braces : {a{b}c}d{e}f" 
>>> additional_content = " : {}" 
>>> additional_content = additional_content.format(42) 
>>> my_string += additional_content 
>>> my_string 
'Here come the braces : {a{b}c}d{e}f : 42' 

此外,您還可以創建一個函數來括號翻番:

def double_brace(string): 
    string = string.replace('{','{{') 
    string = string.replace('}','}}') 
    return string 

my_string = "Here come the braces : {a{b}c}d{e}f" 
my_string = double_brace(my_string) 
my_string += " : {}" 
my_string = my_string.format(42) 
print(my_string) 

輸出:

>>> Here come the braces : {a{b}c}d{e}f : 42