font python python-3.x urllib2 urllib

font - Error de Python3: initial_value debe ser str o None



plot title font size matplotlib (2)

Mientras python2 código de python2 a 3 , python2 este error cuando leo desde una URL

TypeError: initial_value debe ser str o None, no bytes.

import urllib import json import gzip from urllib.parse import urlencode from urllib.request import Request service_url = ''https://babelfy.io/v1/disambiguate'' text = ''BabelNet is both a multilingual encyclopedic dictionary and a semantic network'' lang = ''EN'' Key = ''KEY'' params = { ''text'' : text, ''key'' : Key, ''lang'' :''EN'' } url = service_url + ''?'' + urllib.urlencode(params) request = Request(url) request.add_header(''Accept-encoding'', ''gzip'') response = urllib.request.urlopen(request) if response.info().get(''Content-Encoding'') == ''gzip'': buf = StringIO(response.read()) f = gzip.GzipFile(fileobj=buf) data = json.loads(f.read())

La excepción se arroja a esta línea

buf = StringIO(response.read())

Si uso python2, funciona bien.


Esto se parece a otro problema python3 bytes vs. str . Su respuesta es de tipo bytes (que es diferente en python 3 de str ). Primero debe introducirlo en una cadena usando response.read().decode(''utf-8'') say y luego usar StringIO en él. O puede usar BytesIO como alguien dijo, pero si espera que sea str , la forma preferida es decode primero en str .