Vachan Bhat Vachan Bhat - 6 months ago 7
Python Question

How to remove specific substrings from a set of strings in Python?

I have a set of strings

set1
, and all the strings in
set1
have a two specific substrings which I don't need and want to remove.

Sample Input:
set1={'Apple.good','Orange.good','Pear.bad','Pear.good','Banana.bad','Potato.bad'}


So basically I want the
.good
and
.bad
substrings removed from all the strings.
What I tried:

for x in set1:
x.replace('.good','')
x.replace('.bad','')


But this doesn't seem to work at all. There is absolutely no change in the output and it is the same as the input. I tried using
for x in list(set1)
instead of the original one but that doesn't change anything.

Answer

Strings are immutable. string.replace creates a new string. This is stated in the documentation:

Return a copy of string s with all occurrences of substring old replaced by new. ...

This means you have to re-allocate the set or re-populate it (re-allocating is easier with set comprehension):

new_set = {x.replace('.good', '').replace('.bad', '') for x in set1}