社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python中url的正则表达式

ching-yu • 5 年前 • 1699 次点击  

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

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仍然留在句子中。

article_example = "眼影盤長這樣 http://i.imgur.com/uxvRo3h.jpg 說真的 很不好拍"

知道吗? 谢谢你的帮助。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38386
 
1699 次点击  
文章 [ 3 ]  |  最新文章 5 年前
gilch
Reply   •   1 楼
gilch    5 年前

改变 [s*] s? . 前者是由两个字符组成的集合。后者是可选字符。有这样的网站 regex101.com 这让您可以在Python方言中尝试正则表达式。它将解释regex的每个部分的解释。

Allan The fourth bird
Reply   •   2 楼
Allan The fourth bird    5 年前

URL以http开头,并且在您的模式中匹配 [s*] 两者都匹配 s * character class .

我想你在找

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

Regex demo γ Python demo

import re
regex = r"https?:[a-zA-Z0-9_.+-/#~]+ "
article = "眼影盤長這樣 http://i.imgur.com/uxvRo3h.jpg 說真的 很不好拍"
result = re.sub(regex, "", article)
print(result)

结果

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

一个较短的表达式,其匹配范围稍宽,也可以是非空白的1+倍。 \S+ char后跟0+乘以空格,以匹配原始模式中的尾随空格。

\bhttps?:\S+ *

Regex demo

Tim Biegeleisen
Reply   •   3 楼
Tim Biegeleisen    5 年前

一个简单的解决方法就是替换模式 https?://\S+ 使用空字符串:

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

打印内容:

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

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