2015-09-06 37 views
1

我正在嘗試從api get請求中將數據寫入文件時遇到問題。錯誤是以下消息:「UnicodeEncodeError:'ascii'編解碼器無法編碼字符u'\ xe2'在位置1:序號不在範圍內(128)」Python的編碼問題w/ascii到UTF-8

我知道這意味着我必須將文本ascii到UTF-8,但我不知道如何做到這一點。這是我到目前爲止的代碼

import urllib2 
import json 

def moviesearch(query): 
    title = query 
    api_key = "" 
    f = open('movie_ID_name.txt', 'w') 
    for i in range(1,15,1): 
    api_key = "http://api.themoviedb.org/3/search/movie?api_key=b4a53d5c860f2d09852271d1278bec89&query="+title+"&page="+str(i) 
    json_obj = urllib2.urlopen(api_key) 
    json_obj.encode('utf-8') 
    data = json.load(json_obj) 
    for item in data['results']: 
     f.write("<"+str(item['id'])+", "+str(item['title'])+'>\n') 
f.close() 

moviesearch("life") 

當我運行此我得到以下錯誤:AttributeError的:addinfourl實例沒有屬性「編碼」

我能做些什麼來解決這個問題? 在此先感謝!

回答

1

編碼/解碼只對字節串或unicode字符串之類的東西有意義。數據字典中的字符串是Unicode,這很好,因爲這會讓您的生活變得輕鬆。只需將值編碼爲UTF-8:

import urllib2 
import json 

def moviesearch(query): 
    title = query 
    api_key = "" 
    with open('movie_ID_name.txt', 'w') as f: 
    for i in range(1,15,1): 
     api_key = "http://api.themoviedb.org/3/search/movie?api_key=b4a53d5c860f2d09852271d1278bec89&query="+title+"&page="+str(i) 
     json_obj = urllib2.urlopen(api_key) 
     data = json.load(json_obj) 
     for item in data['results']: 
      f.write("<"+str(item['id'])+", "+item['title'].encode('utf-8')+'>\n') 

moviesearch("life")