2009-03-04 6 views
3

Existe-t-il un moyen en python d'encoder une liste sans les noms de variables? par exemple
q = [ 'avec espace1', 'avec space2']
dans qescaped = [ 'avec% 20space1', 'avec% 20space2']PY: Url Encoder sans nom de variable

Répondre

7

Vous pouvez utiliser urllib.quote avec map:

import urllib 
q = ['with space1', 'with space2'] 
qescaped = map(urllib.quote, q) 
0

de nos jours énumérer compréhensions sont la façon Pythonic de le faire:

q = [ 'with space1', 'with space2' ] 
qescaped = [ urllib.quote(u) for u in q ] 

Souvent, vous n'avez même pas de construire cette liste, mais peut utiliser le générateur lui-même à la place: (. Cela permet d'économiser la mémoire et, au cas où vous n'avez pas besoin de tous les éléments, aussi le temps de calcul)

qescapedGenerator = (urllib.quote(u) for u in q) 

Un grand nombre de récepteurs peut traiter des générateurs ainsi:

urlsInLines = '\n'.join(urllib.quote(u) for u in q) 

for escapedUrl in (urllib.quote(u) for u in q): 
    print escapedUrl 

Et si n'importe quel besoin de recevoir une liste après tout, mettre simplement list() autour du générateur crée la liste quand même.