可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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"