Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将空间转换为列表中的%20_Python_Urlencode - Fatal编程技术网

Python 将空间转换为列表中的%20

Python 将空间转换为列表中的%20,python,urlencode,Python,Urlencode,我需要将python数组中的api帖子的空格转换为%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执行此操作?用于此:

我需要将python数组中的api帖子的空格转换为%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执行此操作?

用于此:

import urllib

...

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

使用
String.replace()
方法,如下所述:


因此,对于
t.text
,它应该是
t.text.replace(“,“%20”)

我建议使用
urllib.parse
模块及其
quote()
函数。 Python3的示例:

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

注意:在您的情况下,使用
quote\u plus()
不起作用,因为此函数将空格替换为plus char。

以下是我发现的可能对您有所帮助的内容:

def隔套更换:
strArr=列表
对于枚举中的i,c(strArr):
如果c='':strArr[i]='%20'
返回“”。加入(strArr)
df[“名称”]=df[“名称”]。应用(间隔符替换)

对我来说似乎是个双重问题。您知道如何转换单个元素吗?其他字符呢,它们不也应该进行URL编码吗?请澄清您的问题:您想进行URL编码,还是简单地替换空格?在Python3中,它工作得非常完美,比上述答案更简单。不知道为什么每个人都认为urllib对于实现相同的结果如此必要。@Jordan如果用户的意图是使用动态URL,则转义整个字符串比替换单个字符的多次出现更安全。
urllib
答案可以说是,更可取,因为它使您的意图更清晰:您正在对字符串进行URL编码。将空格替换为
%20
就是这样做的(假设空格是您唯一需要担心的事情)。编写解释自身的代码更好。谢谢,这实际上实现了我想要的功能。urllib用+替换s空间,而不是我想要的。urllib没有名为parse@TylerR是的,它在python 2中有urllib.quote OP的代码在python 2中,正如您从
print
语句中看到的,这应该是可以接受的答案,因为它更像python