将空格转换为列表中的%20

use*_*318 8 python urlencode

我需要将空格转换为%20,用于python数组中的api帖子

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]
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做t.text上面?

Jan*_*cki 20

我建议使用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)
Run Code Online (Sandbox Code Playgroud)

注意:使用quote_plus()将不适用于您的情况,因为此函数用加号替换空格.

  • 在python 2中的urllib.quote (3认同)

mbo*_*007 13

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

所以t.text,它会t.text.replace(" ", "%20")

  • @Jordan如果用户的意图是使用动态URL,则转义整个字符串更安全,而不是替换单个字符的多次出现. (2认同)
  • 可以说,`urllib` 答案更可取,因为它使您的意图更加清晰:您正在对字符串进行 URL 编码。用 `%20` 替换空格是*如何*你这样做的(假设空格是你唯一需要担心的事情)。编写能自我解释的代码会更好。 (2认同)

zmb*_*mbq 6

使用urllib.quote_plus:

import urllib

...

joblist = [urllib.quote_plus(t.text) for t in olp]
Run Code Online (Sandbox Code Playgroud)

  • 在 python 3 中 [`urllib.parse.quote_plus`](https://docs.python.org/3/library/urllib.parse.html#urllib.parse.quote_plus) (2认同)