Python 如何减去两个字符串?

Python 如何减去两个字符串?,python,string,addition,subtraction,Python,String,Addition,Subtraction,我有一个长字符串,它基本上是一个类似于str=“lamp,bag,mirror,”(和其他项目)的列表 我想知道我是否可以在其他编程语言中添加或减少一些项目,我可以很容易地做到:str=str-“bag,”和getstr=“lamp,mirror,”这在python中不起作用(我在W8 pc上使用2.7) 有没有办法把字符串分开,比如说“bag”,然后用它作为减法?然后我还需要弄清楚如何添加。您可以这样做,只要使用格式良好的列表: 如果列表格式不正确,您可以按照@Lattyware的建议执行以下

我有一个长字符串,它基本上是一个类似于
str=“lamp,bag,mirror,”
(和其他项目)的列表

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


有没有办法把字符串分开,比如说“bag”,然后用它作为减法?然后我还需要弄清楚如何添加。

您可以这样做,只要使用格式良好的列表:

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

s = [item.strip() for item in s0.split(',')]
现在删除该元素:

s.remove("bag")
s
=> ["lamp", "mirror"]
无论哪种方式-要重建字符串,请使用
join()

另一种方法是使用
replace()
——但要小心要替换的字符串,例如
“mirror”
末尾没有尾随的

s0 = "lamp, bag, mirror"
s0.replace("bag, ", "")
=> "lamp, mirror"

您应该将字符串转换为字符串列表,然后执行所需操作。看

my_list="lamp, bag, mirror".split(',')
my_list.remove('bag')
my_str = ",".join(my_list)
你也可以这样做

print "lamp, bag, mirror".replace("bag,","")

使用正则表达式示例:

import re

text = "lamp, bag, mirror"
word = "bag"

pattern = re.compile("[^\w]+")
result = pattern.split(text)
result.remove(word)
print ", ".join(result)
这个怎么样

def substract(a, b):                              
    return "".join(a.rsplit(b))

如果您有两个字符串,如下所示:

t1 = 'how are you'
t2 = 'How is he'
如果要减去这两个字符串,则可以使用以下代码:

l1 = t1.lower().split()
l2 = t2.lower().split()
s1 = ""
s2 = ""
for i in l1:
  if i not in l2:
    s1 = s1 + " " + i 
for j in l2:
  if j not in l1:
    s2 = s2 + " " + j 

new = s1 + " " + s2
print new
输出如下所示:

你是他吗


使用以下命令,您可以添加更多要删除的单词(
[“bag”、“mirror”、…]


当你说“减法”时,你的意思是从你的列表中删除一个项目,或者删除最后匹配的字符(如果不匹配,行为应该是什么?重复值呢?看看字符串替换:
,在其他编程语言中我可以很容易地做到:str=str-“bag”,并获取str=“lamp,mirror,”
什么语言?这是一个假设。我认为这在VBS和Java中是可能的否?可能值得一提的是
str.split()
。是的,我正要这么做:)显然,这里有一个假设,即列表在每个项后都有空格,如果不是这样的话,
[item.strip(),用于s0.split中的项(',')]
更灵活(方法简单)。我只是用他的变量名massive overkill来完成这项任务。为什么在
str.split()
做了想要的事情时使用REs呢?正如我所说,这只是一个例子。当然,在重复的情况下,这与其他例子的功能不同-OP没有对这种情况下所需的行为给出任何解释,但值得注意。好的一点。。。实际上,拆分可能是“正确”的答案,不过我想我会把它扔出去。不确定哪些语言支持字符串减法,或者它在上述语言中的行为。这个解决方案非常优雅。
t1 = 'how are you'
t2 = 'How is he'
l1 = t1.lower().split()
l2 = t2.lower().split()
s1 = ""
s2 = ""
for i in l1:
  if i not in l2:
    s1 = s1 + " " + i 
for j in l2:
  if j not in l1:
    s2 = s2 + " " + j 

new = s1 + " " + s2
print new
(s0, to_remove) = ("lamp, bag, mirror", ["bag"])
s0 = ", ".join([x for x in s0.split(", ") if x not in to_remove])
=> "lamp, mirror"
from re import sub

def Str2MinusStr1 (str1, str2, n=1) :
    return sub(r'%s' % (str2), '', str1, n)

Str2MinusStr1 ('aabbaa', 'a')  
# result 'abbaa'

Str2MinusStr1 ('aabbaa', 'ab')  
# result 'abaa'

Str2MinusStr1 ('aabbaa', 'a', 0)  
# result 'bb'

# n = number of occurences. 
# 0 means all, else means n of occurences. 
# str2 can be any regular expression.