Je sais sur Mon problème est que je vais Recherchez un groupe d'URL du même domaine via la bibliothèque code> urllib code>. Je veux fondamentalement pouvoir générer des URL à utiliser (comme chaînes) avec différents chemins et paramètres de requête. J'espérais que quelque chose pourrait avoir une syntaxe comme: p> essentiellement, je veux pouvoir stocker des valeurs par défaut qui sont transmises à Quelque chose comme ça existe? Les gens sont-ils d'accord que cela vaut la peine de se jeter ensemble? P> p> urllib code> et
urlparse code>, mais je veux m'assurer que je ne réinventions pas la roue.
urlpars.urlunsplit code> à la place d'assombrir constamment le code en passant dans l'ensemble du tuple à chaque fois. P>
4 Réponses :
proposez-vous une extension à http://docs.python.org /Library/urlparse.html#urlparse.urlunparse qui se substituerait à la tuple 6-item?
Parlez-vous de quelque chose comme ça? P>
class URLBuilder( object ): def __init__( self, base ): self.parts = list( urlparse(base) ) def __call__( self, scheme=None, netloc=None, path=None, etc. ): if scheme is not None: self.parts[0] = scheme if netloc is not None: self.parts[1]= netloc if path is not None: self.parts[2]= path etc. return urlunparse( self.parts ) bldr= URLBuilder( someURL ) print bldr( scheme="ftp" )
mehhh ... peut-être. Mais je pensais à quelque chose de plus dans les lignes d'une classe qui stockait les valeurs par défaut. Je ne veux pas continuer à passer à "Semplot". Je veux juste passer des valeurs par défaut à une classe, puis réutilisez une instance pour générer toutes les URL différentes. Quelque chose de similaire au modèle de constructeur qui est omniprésent dans Java.
@Tom: Il ne semble pas assez complexe pour tordre la main. En effet, si vous mettez plus de plus de 25 lignes de code, vous avez probablement trop fait trop.
Encore pas tout à fait sûr de ce que vous cherchez ... Mais je vais lui donner un coup. Si vous cherchez simplement à créer une classe qui conservera vos valeurs par défaut et que, il est suffisamment simple pour faire de votre propre classe et utiliser la magie Python comme str forte>. Voici un exemple rayé (sous-optimal): Si vous cherchez plus de la motif de conception du constructeur, le L'article Wikipedia a un exemple de python raisonnable (ainsi que
Je préfère utiliser quelque chose comme urlparse.urlunparse code> plutôt que ponctuation du code rigide.
Accepter cette réponse jolie tard ... En fin de compte, je n'avais vraiment pas besoin de quelque chose comme ça ... mais c'est ce que je cherchais. Il est évident qu'il n'y avait rien de construit à Python comme celui-ci, mais c'est tout ce que je me demandais. (Je savais que je pouvais facilement le coder moi-même). Mon seul commentaire est comme S.Lott ... J'aurais utilisé Urlparse dans la mise en œuvre de la classe ... merci ewall.
Afin d'éviter le codage rigide, l'URL s'échappant des paramètres, ce que je suis venu ici, vous pouvez utiliser urllib.urlencode code>, par exemple:
params = urllib.urlencode ({' Utilisateur ': auto.request.user.pk,' jeton ': m.hexdigest ()}) code>
Notez que l'exemple ci-dessus ne manipule pas le schéma (https / http), le #hash qui peut être à la fin et inclura une barre oblique de fin lorsqu'il n'y a pas de chemin et une fuite? quand il n'y a pas de paramètres. Il semble que Python aurait quelque chose à comporter de manière proprement sans que tout le monde écrit leur propre.
Vous voudrez peut-être envisager de regarder Furl car cela pourrait être une réponse à vos besoins. p>
La réponse originale était une question plus pour un commentaire qu'une réponse.
Je pense que vous voulez http://pythonhosted.org/uritools/ .
Exemple de la DOCS: P>
new_parts = [part for part in parts] new_parts[2] = "/some/other/path" new_uri = uriunsplit(new_parts)