web-dev-qa-db-fra.com

Comment enlever un mot spécifique d'une chaîne?

J'ai besoin de dépouiller un mot spécifique d'une chaîne.

Mais je trouve que la méthode de bande de python semble ne pas pouvoir reconnaître un mot commandé. Supprime simplement tous les caractères passés au paramètre.

Par exemple:

>>> papa = "papa is a good man"
>>> app = "app is important"
>>> papa.lstrip('papa')
" is a good man"
>>> app.lstrip('papa')
" is important"

Comment pourrais-je dépouiller un mot spécifié avec python?

18
Zen

Utilisez str.replace.

>>> papa.replace('papa', '')
' is a good man'
>>> app.replace('papa', '')
'app is important'

Vous pouvez également utiliser re et utiliser des expressions régulières. Cela permettra la suppression des espaces de début/fin.

>>> import re
>>> papa = 'papa is a good man'
>>> app = 'app is important'
>>> papa3 = 'papa is a papa, and papa'
>>>
>>> patt = re.compile('(\s*)papa(\s*)')
>>> patt.sub('\\1mama\\2', papa)
'mama is a good man'
>>> patt.sub('\\1mama\\2', papa3)
'mama is a mama, and mama'
>>> patt.sub('', papa3)
'is a, and'
35
metatoaster

Le moyen le plus simple serait simplement de le remplacer par une chaîne vide.

s = s.replace('papa', '')
6
iamdev

Vous pouvez également utiliser une expression rationnelle avec re.sub:

article_title_str = re.sub(r'(\s?-?\|?\s?Times of India|\s?-?\|?\s?the Times of India|\s?-?\|?\s+?Gadgets No'',
                           article_title_str, flags=re.IGNORECASE)
2
Akshay Karapurkar

Si vous connaissez la valeur d'indexation du début et de la fin de chaque mot que vous souhaitez remplacer dans le tableau de caractères et que vous souhaitez uniquement remplacer ce bloc de données particulier, vous pouvez le faire comme ceci. 

>>> s = "papa is papa is papa"
>>> s = s[:8]+s[8:13].replace("papa", "mama")+s[13:]
>>> print(s)
papa is mama is papa

Si vous souhaitez également conserver la structure de données d'origine, vous pouvez également la stocker dans un dictionnaire.

>>> bin = {}
>>> s = "papa is papa is papa"
>>> bin["0"] = s
>>> s = s[:8]+s[8:13].replace("papa", "mama")+s[13:]
>>> print(bin["0"])
papa is papa is papa
>>> print(s)
papa is mama is papa
1
Michael Strobel