为什么strip()功能耗尽我的芥末?

时间:2017-07-08 07:37:48

标签: python strip

我正在python中创建一个Hot Dog模拟器,其中有一个“HotDog”类 当我格式化字符串时,如果有2个调味品,我写了这段代码将它添加到字符串中:

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

如果第二个调味品是“芥末”,则strip()函数会消除芥末的“d”,因此字符串打印如下:

Raw hot dog with ketchup and mustar.

我使用了反复试验来查找更多信息,似乎“d”是唯一会消失的字母,即:mustarg和mustarb会很好。
此外,它似乎是引起问题的msg = msg.strip(" and ")的“a” 如果我只删除“d”或“nd”,芥末就可以了。

2 个答案:

答案 0 :(得分:1)

这是记录的功能。

  

字符串中的字符将从字符串的两端剥离此方法被调用

所以,如果你最初做过a raw hotdog,那么你最终会得到raw hotdog

相反,您使用

 " and ".join(condiments)
  

如果我只删除“d”或“nd”,芥末就可以了。

但是你在邮件末尾有一个a,不是吗?

答案 1 :(得分:0)

strip方法无法以您期望的方式运行。它的参数是一系列字符,如果它们在字符串的任何一端以任何顺序(和任意次数)出现,它们将被删除。因此,当您传递" and "时,您告诉它要删除所有空格,'a''n''d'个字符。由于'd'中的'mustard'是其中一个字符,如果它在最后,它将被删除。

从字符串末尾删除特定数量文本的更好方法是对其进行切片:msg = msg[:-5]将删除最后五个字符。

或者您可以避免以多种方式创建额外的" and ",例如使用str.formatstr.join(或两者的组合)。