我如何在python中减去两个字符串?

max*_*ith 22 python string subtraction addition

我有一个长字符串,基本上是一个列表str="lamp, bag, mirror,"(和其他项目)

我想知道我是否可以添加或减去一些项目,在其他编程语言中我可以很容易地做到:str=str-"bag,"并且str="lamp, mirror,"这在python中不起作用(我在W8 pc上使用2.7)

有没有办法将字符串分开说"bag",并以某种方式将其用作减法?然后我仍然需要弄清楚如何添加.

Jor*_*ley 39

你也可以这样做

print "lamp, bag, mirror".replace("bag,","")
Run Code Online (Sandbox Code Playgroud)

  • 当然,在重复的情况下,这与其他示例的功能不同 - 在这种情况下,OP没有给出所需行为的任​​何解释,但值得注意. (3认同)

Zak*_*lab 26

这个怎么样?:

def substract(a, b):                              
    return "".join(a.rsplit(b))
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案非常优雅. (4认同)

Ósc*_*pez 11

只要您使用格式良好的列表,就可以执行此操作:

s0 = "lamp, bag, mirror"
s = s0.split(", ") # s is a list: ["lamp", "bag", "mirror"]
Run Code Online (Sandbox Code Playgroud)

如果列表格式不正确,您可以按照@Lattyware的建议执行以下操作:

s = [item.strip() for item in s0.split(',')]
Run Code Online (Sandbox Code Playgroud)

现在删除元素:

s.remove("bag")
s
=> ["lamp", "mirror"]
Run Code Online (Sandbox Code Playgroud)

无论哪种方式 - 重建字符串,使用join():

", ".join(s)
=> "lamp, mirror"
Run Code Online (Sandbox Code Playgroud)

一种不同的方法是使用replace()- 但要小心你要替换的字符串,例如最后"mirror"没有尾随,.

s0 = "lamp, bag, mirror"
s0.replace("bag, ", "")
=> "lamp, mirror"
Run Code Online (Sandbox Code Playgroud)

  • 显然,这里有一个假设,列表在每个项目之后都有空格,如果不是这样的话,`s0.split(',')]中项目的`[item.strip()更多灵活(简单[list comprehension](http://www.youtube.com/watch?v=pShL9DCSIUw)与[`str.strip()`](http://docs.python.org/3/library /stdtypes.html#str.strip)方法). (2认同)