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 VenangoMuniciplaity 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]

Tags:

Python

List