【问题标题】:Python encoding issue w/ ascii to utf-8带有 ascii 到 utf-8 的 Python 编码问题
【发布时间】:2015-09-06 23:09:33
【问题描述】:

我目前在尝试从 api 获取请求将数据写入文件时遇到问题。错误是以下消息:“UnicodeEncodeError: 'ascii' codec can't encode character u'\xe2' in position 1: ordinal not in range(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 instance has no attribute 'encode'

我能做些什么来解决这个问题? 提前致谢!

【问题讨论】:

    标签: python encoding utf-8


    【解决方案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")
    

    【讨论】:

      猜你喜欢
      • 2014-06-19
      • 1970-01-01
      • 2011-08-23
      • 2015-02-04
      • 2018-02-18
      • 1970-01-01
      • 2016-01-08
      • 1970-01-01
      • 2010-12-01
      相关资源
      最近更新 更多