【问题标题】:Python- regular expression to print word within linkPython-正则表达式在链接中打印单词
【发布时间】:2016-11-11 22:09:17
【问题描述】:

我正在使用 Jupyter Notebook 使用 reg ex 获取 docid=PE209374738 作为我的输出。它目前以这种格式存储在字典中: {'Url': 'https://backtoschool.com/document.php?docid=PE209374738&datasource=PHE&vid=3326&referrer=api'}

这是我的代码:

results= xmldoc.getElementsByTagName("result")
dict= {}
for a in results:
    url= 'Url'
    dict[url] = a.getElementsByTagName("url")[0].childNodes[0].nodeValue
    docid= re.search(r'\?(.*?)&')

有人对如何打印该 ID 有任何建议吗?

【问题讨论】:

    标签: python regex dictionary jupyter-notebook


    【解决方案1】:

    标准库已经有了正确解析 URL 的方法,不需要正则表达式。

    在 Python 3 中:

    from urllib.parse import urlparse, parse_qs
    
    url = 'https://backtoschool.com/document.php?docid=PE209374738&datasource=PHE&vid=3326&referrer=api'
    print(parse_qs(urlparse(url).query)['docid'][0])  # PE209374738
    

    在 Python 2 中,第一行是:

    from urlparse import urlparse, parse_qs
    

    【讨论】:

      【解决方案2】:

      @alex-hall 是正确的,您最好使用适当的 URL 解析器来解析它。

      也就是说,您最初的问题是关于使用正则表达式,所以这里是解决方案(您几乎已经确定):

      s = 'https://backtoschool.com/document.php?docid=PE209374738&datasource=PHE&vid=3326&referrer=api'
      m = re.search(r'\?docid=(.*?)&', s)
      print m.groups()[0]
      

      这将打印所需的PE209374738

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-14
        • 2021-11-26
        • 1970-01-01
        • 2010-09-27
        • 2012-09-24
        • 1970-01-01
        • 1970-01-01
        • 2011-04-21
        相关资源
        最近更新 更多