Ответ 1
Сделайте это:
result = re.sub(r"http\S+", "", subject)
-
http
соответствует буквальным символам -
\S+
соответствует всем символам без пробелов (конец URL-адреса) - заменим пустую строку
Я просто хотел бы найти и заменить все вхождения URL-адреса twitter в строке (твит):
Input:
Это твит с URL: http://t.co/0DlGChTBIx
Вывод:
Это твит с URL:
Я пробовал это:
p=re.compile(r'\<http.+?\>', re.DOTALL)
tweet_clean = re.sub(p, '', tweet)
Сделайте это:
result = re.sub(r"http\S+", "", subject)
http
соответствует буквальным символам\S+
соответствует всем символам без пробелов (конец URL-адреса)В следующем регулярном выражении будут записаны две согласованные группы: первая включает все в твит, пока 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
Вы можете попробовать следующую функцию 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:'
Попробуйте использовать это:
text = re.sub(r"http\S+", "", text)
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)