Python-正则表达式在链接中打印单词

时间:2016-11-11 22:09:17

标签: python regex dictionary jupyter-notebook

我正在使用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有任何建议?

2 个答案:

答案 0 :(得分:3)

标准库已经有正确解析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

答案 1 :(得分:2)

@ alex-hall是正确的,您可能应该使用正确的URL解析器更好地解析它。

那就是说,你原来的问题是关于使用regexp这样做,所以这里是解决方案(你几乎已经钉好了):

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