如何在Python中编码和解码百分比编码(URL编码)字符串?

yak*_*yak 3 python encoding

我写了一个简单的应用程序,从wiki页面下载文章.当我搜索例如第一个名字时Lech,我的代码返回的字符串代替Lech_Kaczy%C5%84skiLech_Pozna%C5%84代替Lech_Kaczy?skiLech_Pozna?.

如何将这些字符解码为普通的抛光字母?我尝试使用: urllib.unquote(text)但后来得到了Lech_Kaczy\xc5\x84ski,Lech_Pozna\xc5\x84而不是Lech_Kaczy?skiLech_Pozna?.

我的代码中有:

# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
Run Code Online (Sandbox Code Playgroud)

但结果是一样的(它根本不起作用).

Mat*_*haq 14

对于 Python 3,unquote现在在urllib.parse

import urllib

print(urllib.parse.unquote("Lech_Kaczy%C5%84ski"))
Run Code Online (Sandbox Code Playgroud)


Mat*_*aes 6

试试这个:

import urllib
urllib.unquote("Lech_Kaczy%C5%84ski").decode('utf8')
Run Code Online (Sandbox Code Playgroud)

这将返回一个unicode字符串:

u'Lech_Kaczy\u0144ski'
Run Code Online (Sandbox Code Playgroud)

然后你可以照常打印和处理.例如:

print(urllib.unquote("Lech_Kaczy%C5%84ski").decode('utf8'))
Run Code Online (Sandbox Code Playgroud)

会导致

Lech_Kaczy?ski
Run Code Online (Sandbox Code Playgroud)