python中URL的正则表达式

2024-05-19 13:09:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想删除句子中的所有网址。
这是我的代码:

import ijson
f = open("/content/drive/My Drive/PTT 爬蟲/content/MakeUp/PTT_MakeUp_content_0_1000.json")
objects = ijson.items(f, 'item')

for obj in list(objects):
    article = obj['content']
    ret = re.findall("http[s*]:[a-zA-Z0-9_.+-/#~]+ ", article) # question here
    for r in ret:
      article = article.replace(r, "")
    print(article)

但是带有“http”的URL仍然留在句子中。在

^{pr2}$

有什么想法吗? 谢谢你的帮助。在


Tags: 代码inimportobjhttpforobjectsarticle
3条回答

url以http开头,在您的模式中匹配[s*],这将匹配s或{}中的^{

我想你在找

https?:[a-zA-Z0-9_.+-/#~]+ 

Regex demo| Python demo

^{pr2}$

结果

眼影盤長這樣 說真的 很不好拍

一个简短的表达式,它的匹配范围更广,也可以匹配1+倍的非空白\S+字符,然后再匹配0+倍的空格,以匹配原始模式中的尾随空格。在

\bhttps?:\S+ *

Regex demo

一个简单的修复方法是将模式https?://\S+替换为空字符串:

article_example = "眼影盤長這樣 http://i.imgur.com/uxvRo3h.jpg 說真的 很不好拍"
output = re.sub(r'https?://\S+', '', article_example)
print(output)

打印:

^{pr2}$

我的模式假设http://https://后面的任何非空白字符都是URL的一部分。在

[s*]更改为s?。前者是由两个字符组成的集合。后者是可选字符。有一些像regex101.com这样的网站可以让你用Python方言试验正则表达式。它将解释正则表达式的每个部分的解释。在

相关问题 更多 >