Replace a word in list and append to same list
I suggest you the following solution, using re.sub
with flags=re.IGNORECASE
to strip the common words ignoring the case:
import re
city = ['Venango Municipality', 'Waterford ship','New York']
common_words = ['ship','municipality']
toAppend = []
for c in city:
for cw in common_words:
if cw.lower() in c.lower().split():
toAppend.append(re.sub(cw, "", c, flags=re.IGNORECASE).strip())
city += toAppend
print(city) # ['Venango Municipality', 'Waterford ship', 'New York', 'Venango', 'Waterford']
And here is the ONE-LINE STYLE solution using list comprehension, short but a bit less readable:
import re
city = ['Venango Municipality', 'Waterford ship','New York']
common_words = ['ship','municipality']
city += [re.sub(cw, "", c, flags=re.IGNORECASE).strip() for c in city for cw in common_words if cw.lower() in c.lower().split()]
print(city) # ['Venango Municipality', 'Waterford ship', 'New York', 'Venango', 'Waterford']
I have made a small code that works as expected:
city=['Venango Municiplaity', 'Waterford ship','New York']
comwo = ['ship','municipality']
for i, c in enumerate(city):
for ii in comwo:
if ii in c:
city.append(city[i].replace(ii,""))
print(city)
Output:
['Venango Municiplaity', 'Waterford ship', 'New York', 'Waterford ']
Note:
The list you have made contains incorrect spelling.
Look at list city
's first element Venango
Municiplaity
and second element of common_words municipality
If you want this in one-liner:
[city.append(city[i].replace(ii,"")) for ii in comwo for i, c in enumerate(city) if ii in c]
I used list comprehension to append to the list city
.
Edit:
So if you also want to replace the space (if any) behind the word then I have made a separate code:
city=['Village home', 'Villagehome','New York']
comwo = ['home']
for i, c in enumerate(city):
for ii in comwo:
if ii in c:
city.append(city[i].replace(" "+ii,"")) if city[i].replace(" "+ii,"") != city[i] else city.append(city[i].replace(ii,""))
print(city)
Output:
['Village home', 'Villagehome', 'New York', 'Village', 'Village']
If you need this in one-liner as well:
[city.append(city[i].replace(" "+ii,"")) if city[i].replace(" "+ii,"") != city[i] else city.append(city[i].replace(ii,"")) for ii in comwo for i, c in enumerate(city) if ii in c]