我正在尝试从api get请求将数据写入文件时遇到问题。错误是以下消息:“UnicodeEncodeError:'ascii'编解码器无法编码位置1中的字符u'\ xe2':序数不在范围内(128)”
我知道这意味着我必须将文本从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实例没有属性'encode'
我该怎么做才能解决这个问题? 提前谢谢!
答案 0 :(得分: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")