How can i subtract two strings in python?

匿名 (未验证) 提交于 2019-12-03 03:04:01

问题:

I have a long string, which is basically a list like str="lamp, bag, mirror," (and other items)

I was wondering if I can add or subtract some items, in other programming languages I can easily do: str=str-"bag," and get str="lamp, mirror," this doesnt work in python (I'm using 2.7 on a W8 pc)

Is there a way to split the string across say "bag," and somehow use that as a subtraction? Then I still need to figure out how to add.

回答1:

you could also just do

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


回答2:

How about this?:

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


回答3:

You can do this as long as you use well-formed lists:

s0 = "lamp, bag, mirror" s = s0.split(", ") # s is a list: ["lamp", "bag", "mirror"] 

If the list is not well-formed, you can do as follows, as suggested by @Lattyware:

s = [item.strip() for item in s0.split(',')] 

Now to delete the element:

s.remove("bag") s => ["lamp", "mirror"] 

Either way - to reconstruct the string, use join():

", ".join(s) => "lamp, mirror" 

A different approach would be to use replace() - but be careful with the string you want to replace, for example "mirror" doesn't have a trailing , at the end.

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


回答4:

you should convert your string to a list of string then do what you want. look

my_list="lamp, bag, mirror".split(',') my_list.remove('bag') my_str = ",".join(my_list) 


回答5:

If you have two strings like below:

t1 = 'how are you' t2 = 'How is he' 

and you want to subtract these two strings then you can use the below code:

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 

Output will be like:

are you is he



回答6:

Using regular expression example:

import re  text = "lamp, bag, mirror" word = "bag"  pattern = re.compile("[^\w]+") result = pattern.split(text) result.remove(word) print ", ".join(result) 


回答7:

Using the following you can add more words to remove (["bag", "mirror", ...])

(s0, to_remove) = ("lamp, bag, mirror", ["bag"]) s0 = ", ".join([x for x in s0.split(", ") if x not in to_remove]) => "lamp, mirror" 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!