Python编码问题w / ascii到utf-8

时间:2015-09-06 23:09:33

标签: python encoding utf-8

我正在尝试从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'

我该怎么做才能解决这个问题? 提前谢谢!

1 个答案:

答案 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")