Comment enlever des caractères à partir de la droite de chaque mot en Python?
Dire, si j'ai un texte comme
text='a!a b! c!!!'
Je veux un résultat comme ceci:
text='a!a b c'
Donc, si à la fin de chaque mot est '!', Je veux me débarrasser de lui. S'il y a plusieurs '!' à la fin d'un mot, tous d'entre eux seront éliminés.
si je dois me débarrasser de guillemets simples(') et les guillemets("), non seulement (!)?
OriginalL'auteur Naoko Nishimura | 2013-04-16
Vous devez vous connecter pour publier un commentaire.
Solution Simple pour cela, il suffit d'utiliser
text.split(' ')
ne pas se diviser sur les onglets qui pourrait être dans une chaîne de caractères
Tout cela dépendait alors, sur la définition d'un mot
Je n'ai jamais entendu parler d'un mot qui a un onglet comme un caractère dans le mot. Je n'ai jamais entendu parler d'onglets comme délimiteurs de mots.
OriginalL'auteur Joran Beasley
Comme une alternative à la scission et la bande de l'approche
qui n'est pas le conserver espace exactement, vous pourriez peut-être utiliser une regex comme
qui ébauches de tous les exclamations qui ne sont pas immédiate, suivie par le début d'un mot.
a!!b
.Vous souhaitez
\!+\B(?!\S)
.OriginalL'auteur random commenter
Ce préserve les espaces supplémentaires que vous pourriez avoir dans votre chaîne de caractères qui n'arrive pas avec
str.split()
\Z
au lieu au lieu de$
?parce que, pour une raison que j'ai oublié de dollars environ, j'ai mis à jour il
OriginalL'auteur Matt
Voici un non-regex, non-répartis en fonction de l'approche:
Cela fonctionne en utilisant itertools.groupby de regrouper les caractères contigus basée sur si oui ou non ils sont des espaces blancs:
Effectivement, c'est comme un espace de préservation de la
.split()
. Une fois que nous avons cela, nous pouvons utiliserrstrip
comme nous l'avons toujours, et puis de recombiner:Nous pouvons également transmettre ce que nous aimons:
OriginalL'auteur DSM