Je veux supprimer les 4 premiers mots du paragraphe
Original: Mon site 21 12 34 a 10 000 trafic
Ce que je veux résultat: a 10000 trafic
J'ai 1000 de ligne identique au paragraphe d'origine ( Mon site 21 12 34 a 10000 trafic
)
j'ai code de recherche regex qui fonctionne comme ceci:
Le code ci-dessous est supprimer le premier mot de la phrase:
[0-9 ]+ = replace with space
Le code suivant supprimera tous les nombres de la ligne:
^\w+\s+(.*) = replace with $1
Je veux combiner le code ci-dessus et faire en sorte qu'un code de recherche regex fonctionne comme je l'explique ci-dessus, mais n'affecte aucun autre mot sur la même ligne.
3 Réponses :
Vous pouvez utiliser
import re rx = re.compile(r"^(\w+\s)[\d\s]+") s = "Mywebsite 21 12 34 have 10000 traffic" print( rx.sub(r"\1", s) ) # => Mywebsite have 10000 traffic
Voir la démo regex a > un Le motif correspondra
^
- début de chaîne (\ w + \ s)
- Groupe de capture 1: un ou plusieurs caractères de mots et un espace [\ d \ s] +
- 1+ espace blanc ou caractères numériques. re.sub(r'^(\w+\s)[\d\s]+', r'\1', text)
p>
^ \ w + \ s [\ d \ s] + Celui-ci fonctionne parfaitement, comment pourrais-je supprimer uniquement les nombres après le premier mot exemple 21 12 34? mais seulement ces chiffres
@GayanFernando Voir la solution mise à jour, veuillez considérer l'accepter si elle fonctionne pour vous.
Si vos lignes sont toutes exactement dans le même format, c'est-à-dire si vous devez toujours supprimer les 4 premiers mots, vous pouvez faire quelque chose comme ça qui est bien plus simple à comprendre qu'un RegEx:
# Iterate through all your lines for line in lines: # Split the line string on spaces to create an array of words. words = line.split(' ') # Exclude the 4 first words and re-join the string with the remaining words. line = ' '.join(words[4:])
Le modèle que vous avez essayé ^ \ w + \ s + (. *)
correspond à 1+ caractères de mot, 1+ caractères d'espacement et puis n'importe quel caractère sauf un retour à la ligne jusqu'à la fin de la chaîne. correspond à la chaîne entière.
Pour supprimer le premier mot et les 3 fois 2 chiffres suivants, vous pouvez utiliser:
^\s*\w+(?: \d{2}){3}\s*
^
Début de chaîne \ s *
Correspond à 0+ caractères d'espacement \ w +
Correspond à 1 caractères de mot ou plus (?: \ d {2}) {3}
Répétez 3 fois en faisant correspondre un espace et 2 chiffres \ s *
Correspond à 0+ caractères d'espacement Notez que \ s
correspond également à une nouvelle ligne . Si vous ne voulez faire correspondre que des espaces ou des tabulations, vous pouvez utiliser [\ t]
à la place.
Merci, ^ \ w + \ s [\ d \ s] + celui-ci fonctionne parfaitement! Mais maintenant, je veux supprimer uniquement les numéros juste après le premier mot, par exemple Mon site Web a un trafic de 10000?
En fait, après le crack (?: \ D {2}) {3} \ s * celui-ci fonctionne pour moi. parce que je veux aussi supprimer uniquement les nombres
Essayez
^ \ w + \ s [\ d \ s] +
et remplacez par une chaîne vide,re.sub (r '^ \ w + \ s [\ d \ s] +', ' ', texte)
Ou essayez de supprimer 4 fois les caractères non blancs suivis d'une tabulation ou d'un espace
^ [\ t] * (?: \ S + [\ t] +) {4}
regex101.com/r/CyUYh0/1Parfait !! son travail est charmant, merci beaucoup!
regex.inginf.units.it C'est un bon outil pour construire des regex.