2016-11-11 87 views
0

我正在使用Jupyter Notebook獲取docid = PE209374738作爲我的輸出使用reg ex。它目前以這種格式存儲在字典中: {'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有什麼建議?

回答

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 
2

@亞歷克斯大廳是正確的,你應該更好地使用適當的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