web-dev-qa-db-fra.com

Expression pour supprimer les liens URL de Twitter tweet

Je voudrais simplement trouver et remplacer toutes les occurrences d'une URL Twitter dans une chaîne (Tweet):

Contribution:

Ceci est un Tweet avec une URL: http://t.co/0DlGChTBIx

Sortie:

Ceci est un Tweet avec une URL:

J'ai essayé ceci:

p=re.compile(r'\<http.+?\>', re.DOTALL)
Tweet_clean = re.sub(p, '', Tweet)
9
hagope

Faire ceci:

result = re.sub(r"http\S+", "", subject)
  • http correspond aux caractères littéraux
  • \S+ correspond à tous les caractères non-blancs (la fin de l'URL)
  • nous remplaçons par la chaîne vide
38
zx81

La regex suivante capturera deux groupes appariés: le premier inclut tout ce qui se trouve dans le Tweet jusqu'à l'URL et le second capturera tout ce qui viendra après l'URL (vide dans l'exemple que vous avez posté ci-dessus):

import re
str = 'This is a Tweet with a url: http://t.co/0DlGChTBIx'
clean_Tweet = re.match('(.*?)http.*?\s?(.*?)', str)
if clean_Tweet: 
    print clean_Tweet.group(1)
    print clean_Tweet.group(2) # will print everything after the URL 
2
alfasin

Vous pouvez essayer la fonction re.sub ci-dessous pour supprimer le lien URL de votre chaîne.

>>> str = 'This is a Tweet with a url: http://t.co/0DlGChTBIx'
>>> m = re.sub(r':.*$', ":", str)
>>> m
'This is a Tweet with a url:'

Il supprime tout ce qui se trouve après le premier symbole : et : dans la chaîne de remplacement ajoute : à la dernière.

Cela permet d’imprimer tous les caractères qui se trouvent juste avant le symbole :,

>>> m = re.search(r'^.*?:', str).group()
>>> m
'This is a Tweet with a url:'
0
Avinash Raj

Essayez d'utiliser ceci: 

text = re.sub(r"http\S+", "", text)
0
Garima Rawat