2012-11-06 21 views
2

我有一個字符串像如何用一個變量替換%S在python

strTemp='i don\'t want %s repeat the %s variable again %s and again %s'%('aa','aa','aa','aa') 

我想與「AA」,以取代所有%s的,所以我必須重複多次的「AA」我怎麼能告訴我只想使用同一個變量來代替所有的%S程序,所以我不必鍵入倍

變量

回答

5

你可以使用命名格式參數語法:

strTemp='i don\'t want %(key)s repeat the %(key)s variable again %(key)s and again %(key)s' % { 
    'key': 'replacement value', 
} 

沒有太多更好的必然罪如果您必須重複四次密鑰,但是如果您的替換值很長,或者您的副作用是確實不想多做一次,那麼這是一個不錯的選擇。

7

%操作符不鼓勵。改用str.format

strTemp='i don\'t want {0} repeat the {0} variable again {0} and again {0}'.format('aa') 
+1

爲什麼'%'不鼓勵? – Tim

+0

'{}'語法更新更炫。你可以用''''''語法來做一堆事情。我的印象是從Python 3中刪除'%'語法,但這可能是錯誤的。 – zwol

+1

我喜歡'%'語法:在格式中輸入令人討厭 –

0

,如果你真的有很多重複和不想鍵入{0}%(var)s你可以考慮一個很少使用(placeholder-)字符,它被替換,如:

p='µ µµ µµµ µµµµ µµµµµ {1}'.replace('µ','{0}').format(' muahaha ', 'duh') 

或單個變量變量:

strTemp='i don\'t want µ repeat the µ variable again µ and again µ'.replace('µ','aa') 
+0

爲了獲得最大的壓縮率和完整的不可讀性,您可以使用'reduce'將最小尺寸開銷(只需指定函數和參數列表)的大量替換鏈接在一起。我實際上編寫了一個腳本來壓縮字符串文字一次(它也使用其他技巧來減小大小)。 – Antimony

+0

好主意! ;-)但是我已經超出了OP的原始意圖,另一方面它是永遠不會錯誤的提醒這樣不錯的包括電池;-) –

+0

@Antimony:btw我用我的編輯器(VIM)的能力,這些多餘的類型: inoremap¹{0} inoremap²{1} .... ;-) –