Выражение для удаления URL-ссылок из твитов Twitter

Я просто хотел бы найти и заменить все вхождения URL-адреса twitter в строке (твит):

Input:

Это твит с URL: http://t.co/0DlGChTBIx

Вывод:

Это твит с URL:

Я пробовал это:

p=re.compile(r'\<http.+?\>', re.DOTALL)
tweet_clean = re.sub(p, '', tweet)

Ответ 1

Сделайте это:

result = re.sub(r"http\S+", "", subject)
  • http соответствует буквальным символам
  • \S+ соответствует всем символам без пробелов (конец URL-адреса)
  • заменим пустую строку

Ответ 2

В следующем регулярном выражении будут записаны две согласованные группы: первая включает все в твит, пока URL-адрес и второй не поймают все, что будет после URL-адреса (пустым в примере, который вы указали выше):

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 

Ответ 3

Вы можете попробовать следующую функцию re.sub удалить ссылку URL из вашей строки,

>>> 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:'

Он удаляет все после первого символа : и : в заменяющей строке добавляет : последним.

Это будет печатать все символы, которые только что были до символа :,

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

Ответ 4

Попробуйте использовать это:

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

Ответ 5

clean_tweet = re.match('(. *?) http (. *?)\s (. *)', content)

while (clean_tweet):
content = clean_tweet.group(1) + "" + clean_tweet.group(3)
clean_tweet = re.match('(. *?) http (. *?)\s (. *)', content)