从url的中间删除表达式

2024-09-29 06:31:54 发布

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

我有以下图像url:

https://img.com/woo/image/u/f_auto,q_auto/w_350/v1619377072/Products/dada/Products/dada/IMG_47473065_IDW_IMAGE_bf30ac4dbbd308c8b0248b954a58a731a5b413b0f6782b834c781d0da621d727_HR.jpg

这里的url默认包含解析,即其中的w_350。我想从此图像url中删除此分辨率

图像url的最终输出应如下所示:

https://img.com/woo/image/u/f_auto,q_auto/v1619377072/Products/dada/Products/dada/IMG_47473065_IDW_IMAGE_bf30ac4dbbd308c8b0248b954a58a731a5b413b0f6782b834c781d0da621d727_HR.jpg

我该怎么做

还有比这更好的吗

re.sub(r"w_\d\d\d/", "", url)

Tags: https图像imagecomurlimgautoproducts
2条回答

我只是测试了一下,这很有效

import re
pattern = "([a-z]_[0-9]{3}\/)"
original_string = "https://img.com/woo/image/u/f_auto,q_auto/w_350/v1619377072/Products/f6782b834c781d0da621d727_HR.jpg"
changed = re.sub(pattern, "", original_string)
#output   

应该给你这个值

"https://img.com/woo/image/u/f_auto,q_auto/v1619377072/Products/f6782b834c781d0da621d727_HR.jpg"

这是另一种方法:如果您确定模式将只包含数字0-9,则最好使用[0-9]而不是\d,如文档所示:

\d Matches any Unicode decimal digit (that is, any character in Unicode character category [Nd]). This includes [0-9], and also many other digit characters. If the ASCII flag is used only [0-9] is matched.

使用[0-9]将减少计算量,因为只匹配数字0-9,而不是所有Unicode字符

import re
url = 'https://img.com/woo/image/u/f_auto,q_auto/w_350/v1619377072/Products/dada/Products/dada/IMG_47473065_IDW_IMAGE_bf30ac4dbbd308c8b0248b954a58a731a5b413b0f6782b834c781d0da621d727_HR.jpg'

url = re.sub(r'[a-z]_[0-9]{3}/', '', url)
print (url)

输出:

https://img.com/woo/image/u/f_auto,q_auto/v1619377072/Products/dada/Products/dada/IMG_47473065_IDW_IMAGE_bf30ac4dbbd308c8b0248b954a58a731a5b413b0f6782b834c781d0da621d727_HR.jpg

相关问题 更多 >