我试过许多代码来删除推文中的链接,但似乎都不起作用。
原始链接示例:网址:t.co/WfWWOukD9l/
之后的显示方式:上一页
整个功能:
def cleantext(text):
text = re.sub(r'@[A-Za-z0-9]+', '', text)
text = re.sub(r'[^0-9A-Za-z \t]+', '', text)
text = re.sub(r'#', '', text)
text = re.sub(r'RT[\s]+', '', text)
text = re.sub(r'https?://\S+', '', text)
text = re.sub(r'(<a href[\s\S]*?>[\s\S]*?)|(\b(http|https):\/\/.*[^ alt]\b)', '', text)
text = re.sub(r'http[s]?:\/\/\S+', '', text)
text = text.lower()
return text
除了链接,文本中的其他内容都被清除了。使用Python 3.10.9 Regex 2022.10.31
我使用的代码:
text = re.sub(r'https?://\S+', '', text)
text = re.sub(r'(<a href[\s\S]*?>[\s\S]*?)|(\b(http|https):\/\/.*[^ alt]\b)', '', text)
text = re.sub(r'http[s]?:\/\/\S+', '', text)
2条答案
按热度按时间cwxwcias1#
问题是你在替换链接之前替换了各种特殊字符。当你到达链接替换时,你的字符串不包含
:
或/
,所以http[s]?:\/\/\S+
不能匹配。把它移到函数的开头,这样链接在你尝试匹配之前是完整的。此外,根据您的需要(由于示例不好,我看不到),
\S+
可能匹配或不匹配的内容超过您的需要,如果是这样,您必须将其更改为更具限制性的内容,如[^\s()]+
。最后,需要注意的是,
[s]?
等效于s?
-这里的括号是不必要的。5cg8jx4n2#
当你每次只想删除相同的Chars时,那么就只删除第x个Chars。