2014-12-18 28 views
5

我需要空间转换为%20 API的帖子在Python阵列转换空间,以20%的列表

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] 

我如何能做到以上t.text?

+1

对我来说似乎是一个双重问题。你知道如何转换单个元素吗? –

+1

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

+0

其他字符呢,它们不应该被URL编码吗? –

回答

12

这里描述使用String.replace()方法:http://www.tutorialspoint.com/python/string_replace.htm

所以对于t.text,这将是t.text.replace(" ", "%20")

+0

完美的作品,上面的答案。不知道为什么每个人都认为urllib对获得同样的结果是非常必要的。 – Jordan

+2

@Jordan如果用户的意图是使用动态URL,则转义整个字符串更安全,而不是替换多个单个字符。 – mbomb007

+1

可以说'urllib'的答案是可取的,因为它让你的意图更清晰:你是URL编码的字符串。 *用'%20'代替空格是*你怎么做的(假设空间是唯一需要担心的事情)。编写解释自己的代码更好。 – kindall

5

使用urllib.quote_plus此:

import urllib 

... 

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

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

5

我会建议使用urllib.parse模块和它的quote()功能。 https://docs.python.org/3.6/library/urllib.parse.html#urllib.parse.quote 举例Python3:

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

注:如使用此功能通过加字符替换空间quote_plus()不会工作你的情况。

+0

urllib没有模块命名解析 –

+0

@TylerR是的,它有 https://docs.python.org/3/library/urllib.parse.html#module-urllib.parse –

+0

urllib.quote python 2 – theannouncer