J'essaye de créer une URL en joignant certains composants dynamiques. J'ai pensé à utiliser quelque chose comme os.path.join()
MAIS pour les URL dans mon cas. De la recherche, j'ai trouvé urlparse.urljoin()
fait la même chose. Cependant, il semble que cela ne prenne que deux arguments en même temps.Python: joindre plusieurs composants pour créer une URL
Je donne les résultats suivants à ce jour qui fonctionne, mais semble répétitif:
a = urlparse.urljoin(environment, schedule_uri)
b = urlparse.urljoin(a, str(events_to_hours))
c = urlparse.urljoin(b, str(events_from_date))
d = urlparse.urljoin(c, str(api_version))
e = urlparse.urljoin(d, str(id))
url = e + '.json'
Sortie = http://example.com/schedule/12/20160322/v1/1.json
Les travaux ci-dessus et j'essayé de le rendre plus court de cette façon:
url_join_items = [environment, schedule_uri, str(events_to_hours),
str(events_from_date), str(api_version), str(id), ".json"]
new_url = ""
for url_items in url_join_items:
new_url = urlparse.urljoin(new_url, url_items)
Sortie: http://example.com/schedule/.json
Mais le seco La mise en œuvre nd ne fonctionne pas. S'il vous plaît me suggérer comment résoudre ce problème ou la meilleure façon de le faire.
EDIT 1: La sortie de la solution reduce
ressemble à ceci (malheureusement): Sortie: http://example.com/schedule/.json
@idjaw: Dans mon cas, je suis déjà sûr que je veux utiliser 'urlparse', j'ai juste besoin d'un moyen plus propre et plus court de joindre plus de 2 composants à la même URL – summerNight
Pourquoi ça ne marche pas? Cela me semble plutôt bien. Quel est le résultat et quel est le problème? Vous voulez probablement vous en tenir à la concaténation de chaînes pour '.json' afin que votre URL ne se termine pas par'/.json'. Je ne sais pas non plus comment gérer une chaîne vide, donc vous pouvez commencer par 'new_url = url_join_items [0]' et ensuite parcourir 'url_join_items [1:]'. Mais la réponse avec réduire est probablement meilleure. –
@AlexHall: S'il vous plaît voir mon EDIT 1 et sortie de chaque méthode – summerNight