2016-11-11 3 views
0

zu drucken Ich benutze Jupyter Notebook, um Docid = PE209374738 als meine Ausgabe mit reg Ex zu bekommen. Es ist derzeit in einem Wörterbuch in diesem Format gespeichert: {'Url': 'https://backtoschool.com/document.php?docid=PE209374738&datasource=PHE&vid=3326&referrer=api'}.Python - regulärer Ausdruck, um das Wort innerhalb des Links

Dies ist mein Code:

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

Hat jemand irgendwelche Vorschläge, wie die ID drucken?

Antwort

3

Die Standardbibliothek verfügt bereits über Methoden zum korrekten Parsing von URLs, ohne Regex.

In 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 

In Python 2 die erste Zeile ist:

from urlparse import urlparse, parse_qs 
2

@ alex-Halle korrekt ist, sollten Sie vielleicht besser analysieren dies einen richtigen URL-Parser verwenden.

Das heißt, war Ihre ursprüngliche Frage über sie bei der Verwendung von regulären Ausdrücken zu tun, hier also die Lösung (die man fast schon genagelt):

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

Dies ist die gewünschte PE209374738 gedruckt wird.

Verwandte Themen