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