2017-07-08 27 views
-2

我在python中創建了一個Hot Dog模擬器,並帶有一個類「HotDog」。
當我格式化字符串,如果有2種調味品,我寫了這個代碼,將其添加到字符串:爲什麼strip()函數耗盡我的芥末?

if len(self.condiments) == 2: 
    for i in self.condiments: 
     msg = msg + i + " and " 
    msg = msg.strip(" and ") 

如果第二調味品是「芥末」,帶()函數取走「d」芥末的,因此字符串打印這樣的:

Raw hot dog with ketchup and mustar. 

我使用試驗和錯誤,以獲取更多,而且似乎「d」是會消失,即始信: mustarg和mustarb會很好。
此外,它似乎是造成問題的msg = msg.strip(" and ")的「a」。
如果我只剝去「d」或「nd」,芥末就沒事了。

+2

這就是'.strip' [文檔](https://docs.python.org/3/library/stdtypes.html#str.strip)要做的,是的。 *「字符參數不是前綴或後綴;相反,其值的所有組合都被剝離」*。 – jonrsharpe

+0

''和'.join(self.condiments)'怎麼樣? –

回答

1

這是記錄的功能。

字符串中的字符將這種方法稱爲上

所以串的兩端被剝奪,如果你最初做a raw hotdog,那麼你最終與raw hotdog

怎麼樣,而不是你使用

" and ".join(condiments) 

如果我只剝去「d」或「nd」,芥末就沒事了。

但是你在郵件的末尾會有一個a,不是嗎?

0

strip方法不符合您的期望。它的參數是一串字符,如果它們以任意順序(和任意次數)出現在字符串的任一端,它們將被刪除。所以當你通過" and "時,你告訴它去掉所有空格,'a','n''d'個字符。由於'mustard'中的'd'是其中的一個字符,因此如果它結尾,它將被剝離。

從字符串末尾刪除特定數量的文本的更好方法是對其進行分片:msg = msg[:-5]將刪除最後五個字符。

或者你可以避開任何數量的方法,如使用str.formatstr.join(或兩者的組合)創造了額外的" and "

+0

或'msg = msg [: - len(「and」)]' –