Python找到第n次出现的正斜杠

我在 JSON 文件中有一些 URL,我试图只提取图像名称(即 1234_5678.jpg)。这些 URL 如下所示:

"display_url": "https://scontent-ort2-1.cdninstagram.com/v/t51.2885-15/e35/42672335_535716956833725_410505336278760344_n.jpg?_nc.ort2-1.cdninstagram.com/v/t51.2885-15/e35/42672335_535716956833725_410505336278760344_n。 -T37mi&tp=1&oh=69744106833b4fa24cb921e6e1009d32&oe=6024044B&ig_cache_key=MTg5ODMzNjQ1NzMwMTM4Njg2Nw%3D%3D.2"

我决定使用的方法是定位第 6 次出现的正斜杠,以及.jpg, 并提取它们之间的子字符串:

import json


def findnth(haystack, needle, n):
    parts= haystack.split(needle, n+1)
    if len(parts)<=n+1:
        return -1
    return len(haystack)-len(parts[-1])-len(needle)

with open('pathtofile.json', encoding='utf8') as json_file:
    data = json.load(json_file)
    for p in data['GraphImages']:
        url = p['display_url']
        start = findnth(url, "/", 6)
        end = url.find(".jpg")
        print(start)
        print(end)

        url = url[start:end+3]

但是,起始值始终为 -1。最终值在 90-110 之间,这似乎是合理的。为什么我的第 n 个搜索功能没有找到合适的位置?

回答

您可以使用 urlparse

前任:

import os
from urllib.parse import urlparse
url = "https://scontent-ort2-1.cdninstagram.com/v/t51.2885-15/e35/42672335_535716956833725_410505336278760344_n.jpg?_nc_ht=scontent-ort2-1.cdninstagram.com&_nc_cat=109&_nc_ohc=PCKXombie-oAX-T37mi&tp=1&oh=69744106833b4fa24cb921e6e1009d32&oe=6024044B&ig_cache_key=MTg5ODMzNjQ1NzMwMTM4Njg2Nw%3D%3D.2"
o = urlparse(url)

print(os.path.basename(o.path))
# --> 42672335_535716956833725_410505336278760344_n.jpg


以上是Python找到第n次出现的正斜杠的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>