3 votes

Supprimer tous les mots qui suivent un mot particulier

Je veux supprimer tous les mots, chiffres, nombres hexadécimaux après un mot spécifique ".c :"

Ma ligne est comme ça

line = "Bags has a price.c:123
line = "Bags has a price.c:543ea

J'ai essayé avec les éléments suivants :

d = re.sub(r'[.c:\W+]', '', c)

Mais si la réponse n'est pas correcte, le résultat sera le suivant :

output: Bags has a price

5voto

avasal Points 6800
>>> line = "Bags has a price.c:123"
>>> line.split(':')[0]
'Bags has a price.c'
>>> line.split('.c')[0]
'Bags has a price'

2voto

Andreas Jung Points 1
>>> line = "Bags has a price.c:123"
>>> ''.join(line.partition('.c')[:2])
'Bags has a price.c'

0voto

paulgrav Points 455

Si vous devez utiliser une expression rationnelle - et il est clair que ce n'est pas le cas. Vous auriez pu faire ceci :

re.sub(r'\.c:.*?$','', line)

Si vous pouvez éviter les expressions rationnelles, faites-le. Ce sera probablement beaucoup plus lent que d'utiliser split.

0voto

monkut Points 14549

Et en utilisant une simple recherche d'index.

>>> line = "Bags has a price.c:543ea"
>>> after_word = ".c"
>>> cleaned_line = line[:line.index(after_word) + len(after_word) ]
>>> cleaned_line
Bags has a price.c

Exclure .c il suffit d'enlever le + len(after_word)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X