2015-10-15 128 views
3

我寫了一個簡單的應用程序,從維基頁面下載文章。當我搜索例如名爲Lech時,我的代碼返回的字符串如Lech_Kaczy%C5%84skiLech_Pozna%C5%84而不是Lech_KaczyńskiLech_Poznań如何在Python中編碼和解碼百分比編碼(URL編碼)的字符串?

如何將這些字符解碼爲普通波蘭語字母?我試圖使用: 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") 

但結果是一樣的(它只是不工作)。

+0

@PeterWood:嘗試過,但我得到的字符串,比如'Lech_Kaczy \ XC5 \ x84ski'代替。我想知道如何將其轉換爲波蘭語字母。 – yak

+1

可能的重複[如何在python中取消一個urlencoded unicode字符串?](http://stackoverflow.com/questions/300445/how-to-unquote-a-urlencoded-unicode-string-in-python) –

回答

4

試試這個:

import urllib 
urllib.unquote("Lech_Kaczy%C5%84ski").decode('utf8') 

這將返回一個unicode字符串:

u'Lech_Kaczy\u0144ski' 

,您可以並打印過程如常。例如:

print(urllib.unquote("Lech_Kaczy%C5%84ski").decode('utf8')) 

將導致

Lech_Kaczyński 
+0

它給出我'Lech_Kaczy \ xc5 \ x84ski',而不是'Lech_Kaczyński' – yak

+0

這看起來不像一個unicode字符串,你確定你嘗試正確嗎?這是我的會話:...(我將在後文中進行編輯) –

+0

我不確定你甚至需要'decode'調用(僅在沒有嘗試的情況下才基於它工作)。 – Holloway