2016-12-26 76 views
0

我有一個這樣的字符串:刮谷歌學術安全頁

url = 'http://scholar.google.pl/citations?view_op\x3dsearch_authors\x26hl\x3dpl\x26oe\x3dLatin2\x26mauthors\x3dlabel:security\x26after_author\x3drukAAOJ8__8J\x26astart\x3d10' 

我想將它轉化成這樣:

converted_url = 'https://scholar.google.pl/citations?view_op=search_authors&hl=en&mauthors=label:security&after_author=rukAAOJ8__8J&astart=10' 

我已經試過這樣:

converted_url = url.decode('utf-8') 

然而,這個錯誤被拋出:

AttributeError: 'str' object has no attribute 'decode' 
+0

BTW: [獲取谷歌學者標籤的作者姓名和URL](http://stackoverflow.com/questions/41324356/get-authors-name-and-url-for-tag-from-google-scholar) – furas

回答

0

decode用於將bytes轉換成string。而你的網址是string,而不是bytes

您可以使用encode這個string轉化爲bytes和以後使用decode轉換爲糾正string

(我用的前綴r來模擬這個問題的文本 - 無前綴的網址沒有被轉換)

url = r'http://scholar.google.pl/citations?view_op\x3dsearch_authors\x26hl\x3dpl\x26oe\x3dLatin2\x26mauthors\x3dlabel:security\x26after_author\x3drukAAOJ8__8J\x26astart\x3d10' 
print(url) 

url = url.encode('utf-8').decode('unicode_escape') 
print(url) 

結果:

http://scholar.google.pl/citations?view_op\x3dsearch_authors\x26hl\x3dpl\x26oe\x3dLatin2\x26mauthors\x3dlabel:security\x26after_author\x3drukAAOJ8__8J\x26astart\x3d10 

http://scholar.google.pl/citations?view_op=search_authors&hl=pl&oe=Latin2&mauthors=label:security&after_author=rukAAOJ8__8J&astart=10 

BTW:首先檢查print(url)也許你有正確的網址,但你使用錯誤的方法來顯示它。 Python Shell使用print(repr())使用print(repr())顯示所有結果,其中使用print(repr())顯示一些字符作爲代碼以顯示在文本中使用了什麼樣的端點編碼(utf-8,iso-8859-1,win-1250,latin-1等)