【问题标题】:I need to pull a specific string from a URL path我需要从 URL 路径中提取特定字符串
【发布时间】:2019-03-01 02:58:38
【问题描述】:

我正在从 Internet 上的 JSON 中提取以下 URL。

我正在使用的字符串示例: http://icons.wxug.com/i/c/k/nt_cloudy.gif

我只需要从上面获取“nt_cloudy”,以便将 img(已存储)写入天气应用程序的电子纸显示器。我已经尝试过 re.split() 但只能取回完整的字符串,无论我拆分什么。

一切正常,如果我手动输入文件名,我可以显示图像,但是天气条件会发生变化,所以我需要从 JSON 中提取名称。同样,它只是在我卡住的完整字符串中定位特定字符串。

imgurl = weatherinfo['current_observation']['icon_url'] # http://icons.wxug.com/i/c/k/nt_cloudy.gif
img_condition = re.split('\/ |\// |.', imgurl)
image_1 = "/home/pi/epaper/python2/icons/" + img_condition + ".bmp"

【问题讨论】:

    标签: string split weather strsplit


    【解决方案1】:

    请检查一下,

    import re
    
    imgurl = weatherinfo['current_observation']['icon_url'] # http://icons.wxug.com/i/c/k/nt_cloudy.gif
    img_condition = re.split('\/', imgurl)[-1]
    image_1 = "/home/pi/epaper/python2/icons/" + img_condition[:-4] + ".bmp"
    

    【讨论】:

      【解决方案2】:

      如果您确信路径将始终以图像文件名结尾,并且后面不会有查询字符串(例如,nt_cloudy.gif?foo=bar&x=y&...),您可以使用 Python 的 os.path 标准模块中的文件系统路径函数.

      https://docs.python.org/3/library/os.path.html

      #!/usr/bin/env python
      import os
      
      URL = 'http://icons.wxug.com/i/c/k/nt_cloudy.gif'
      FILENAME = os.path.basename(URL)
      

      如果您尝试解码可能包含查询字符串的 URL,您可能更喜欢使用 urllib.parse 模块。

      https://docs.python.org/3/library/urllib.parse.html#module-urllib.parse

      我不会详细说明为什么您的正则表达式没有按您预期的方式工作,因为老实说,手工制作正则表达式对于这个用例来说是多余的。

      【讨论】:

        【解决方案3】:

        你可以使用下面的正则表达式:

        let regex = /(\w+)\.gif/g.exec("http://icons.wxug.com/i/c/k/nt_cloudy.gif")
        if(regex != null && regex.length == 2)
            console.log(regex[1]);
        

        找到参考here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多