我只是想在字符串中找到并替换所有出现的twitter url(推文):
输入:
这是一条带有网址的推文:http://t.co/0DlGChTBIx
输出:
这是一条带有网址的推文:
我试过这个:
p=re.compile(r'\<http.+?\>', re.DOTALL)
tweet_clean = re.sub(p, '', tweet)
答案 0 :(得分:41)
这样做:
result = re.sub(r"http\S+", "", subject)
http
匹配文字字符\S+
匹配所有非空白字符(网址末尾)答案 1 :(得分: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
答案 2 :(得分:0)
您可以尝试使用以下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:'
答案 3 :(得分:0)
尝试使用:
text = re.sub(r"http\S+", "", text)
答案 4 :(得分:0)
clean_tweet = re.match('(。*?)http(。*?)\ s(。*)',内容)
while(clean_tweet):
内容= clean_tweet.group(1)+“” + clean_tweet.group(3)
clean_tweet = re.match('(。*?)http(。*?)\ s(。*)',内容)
答案 5 :(得分:0)
text = re.sub(r"https:(\/\/t\.co\/([A-Za-z0-9]|[A-Za-z]){10})", "", text)
在t.co/
之后,它也与字母数字匹配
答案 6 :(得分:0)
您可以使用:
text = 'Amazing save #FACup #zeebox https://stackoverflow.com/tiUya56M Ok'
text = re.sub(r'https?:\/\/\S*', '', text, flags=re.MULTILINE)
# output: 'Amazing save #FACup #zeebox Ok'
r
解决方案是将Python的原始字符串表示法用于正则表达式模式;反斜杠在以'r'开头的字符串文字中不会以任何特殊方式处理?
使结果RE匹配先前RE的0或1个重复。 https?将匹配“ http”或“ https”。https?:\/\/
将匹配字符串中的任何“ http://”和“ https://” \S
返回匹配项,其中字符串不包含空格字符*
出现零次或多次答案 7 :(得分:0)
我找到了这个解决方案:
text = re.sub(r'https?://\S+|www\.\S+', '', text)