我正在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”,芥末就可以了。
答案 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.format
或str.join
(或两者的组合)。