2014-12-18 11 views
5

ho bisogno di convertire gli spazi per 20% per i posti di api in un array di pitoneConverti spazi per% 20 in lista

tree = et.parse(os.environ['SPRINT_XML']) 
olp = tree.findall(".//string") 
if not olp: 
    print colored('FAILED', 'red') +" No jobs accociated to this view" 
    exit(1) 
joblist = [t.text for t in olp] 

Come posso fare questo a t.text sopra?

+1

sembra una doppia domanda per me. sai come convertire un singolo elemento? –

+1

https://docs.python.org/2/library/urllib.html#urllib.quote –

+0

E gli altri personaggi, non dovrebbero essere codificati come URL? –

risposta

12

Utilizzare il metodo String.replace() come descritto qui: http://www.tutorialspoint.com/python/string_replace.htm

Quindi per t.text, sarebbe t.text.replace(" ", "%20")

+0

Funziona perfettamente ed è molto meno complicato di le risposte di cui sopra. Non so perché tutti pensano che urllib sia così necessario per ottenere lo stesso risultato. – Jordan

+2

@Jordan Se l'intento dell'utente è di utilizzare un URL dinamico, è più sicuro sfuggire all'intera stringa, piuttosto che sostituire più occorrenze di un singolo carattere. – mbomb007

+1

La risposta 'urllib' è, preferibilmente, preferibile perché rende più chiaro il tuo intento: tu stai codificando l'URL della stringa. Sostituire gli spazi con '% 20' è * come * lo stai facendo (supponendo che gli spazi siano l'unica cosa di cui devi preoccuparti). Scrivere il codice che spiega se stesso è meglio. – kindall

5

Usa urllib.quote_plus per questo:

import urllib 

... 

joblist = [urllib.quote_plus(t.text) for t in olp] 
+1

e in python 3 ['urllib.parse.quote_plus'] (https://docs.python.org/3/library/urllib.parse.html#urllib.parse.quote_plus) –

5

mi consiglia di utilizzare il modulo urllib.parse ed è quote() funzione. https://docs.python.org/3.6/library/urllib.parse.html#urllib.parse.quote Esempio per python3:

import urllib 
text_encoded = urllib.parse.quote(t.text) 

Nota: usando quote_plus() non funziona nel vostro caso come questa funzione sostituisce gli spazi con più carattere.

+0

urllib non ha un modulo chiamato parse –

+0

@TylerR sì, ha https://docs.python.org/3/library/urllib.parse.html#module-urllib.parse –

+0

urllib.quote in python 2 – theannouncer

Problemi correlati