Existe-t-il un moyen d'analyser une URL (avec une bibliothèque python) et de renvoyer un dictionnaire python avec les clés et les valeurs d'une partie des paramètres de requête de l'URL?
Par exemple:
url = "http://www.example.org/default.html?ct=32&op=92&item=98"
retour attendu:
{'ct':32, 'op':92, 'item':98}
python
parsing
url
query-parameters
Leonardo Andrade
la source
la source
urllib.parse_qs
renvoie également des listes pour les valeurs. Je le mentionne spécifiquement dans ma réponse, au fait, vous voudrez peut-être utiliser à laurllib.parse_qsl()
place et passer la liste résultantedict()
si vous ne voulez que des valeurs uniques.parse_qls
est que puisqu'il retourne une liste de tuples, conversion qui un dict gardera la dernière valeur au lieu de la première . Cela suppose bien sûr qu'il y avait plusieurs valeurs pour commencer.Si vous préférez ne pas utiliser d'analyseur:
Je ne supprimerai donc pas ce qui précède mais ce n'est certainement pas ce que vous devriez utiliser.
Je pense avoir lu quelques-unes des réponses et elles avaient l'air un peu compliquées, si vous êtes comme moi, n'utilisez pas ma solution.
Utilisez ceci:
et pour Python 2.X
Je sais que c'est la même chose que la réponse acceptée, juste dans une seule ligne qui peut être copiée.
la source
+
), et leurllib.parse
déclenche ou ignore également les erreurs pour vous, comme demandé. Je ne sais pas pourquoi vous voudriez réinventer cette roue lorsqu'elle fait partie de la bibliothèque standard.Pour python 2.7
la source
Je suis d'accord pour ne pas réinventer la roue mais parfois (pendant que vous apprenez) cela aide à construire une roue pour comprendre une roue. :) Donc, d'un point de vue purement académique, je propose cela avec l'avertissement que l'utilisation d'un dictionnaire suppose que les paires nom-valeur sont uniques (que la chaîne de requête ne contient pas plusieurs enregistrements).
J'utilise la version 3.6.5 dans l'IDE Idle.
la source
Car
python2.7
j'utilise leurlparse
module pour analyser la requête d'url à dict.la source