python - UnicodeEncodeError: el codec ''ascii'' no puede codificar el carácter u ''/ u201c'' en la posición 34: ordinal no está dentro del rango(128)
python-2.7 pyscripter (2)
Me encontré con esto también utilizando la API de Transifex
response[''source_string'']
UnicodeEncodeError: ''ascii'' codec can''t encode character u''/u2019'' in position 3: ordinal not in range(128)
Corregido con la response[''source_string''].encode("utf-8")
import requests
username = "api"
password = "PASSWORD"
AUTH = (username, password)
url = ''https://www.transifex.com/api/2/project/project-site/resource/name-of-resource/translation/en/strings/?details''
response = requests.get(url, auth=AUTH).json()
print response[''key''], response[''context'']
print response[''source_string''].encode("utf-8")
He estado trabajando en un programa para recuperar preguntas del desbordamiento de pila. Hasta ayer, el programa estaba funcionando bien, pero desde hoy recibí el error.
"Message File Name Line Position
Traceback
<module> C:/Users/DPT/Desktop/questions.py 13
UnicodeEncodeError: ''ascii'' codec can''t encode character u''/u201c'' in position 34: ordinal not in range(128)"
Actualmente, las preguntas se muestran, pero parece que no puedo copiar la salida a un nuevo archivo de texto.
import sys
sys.path.append(''.'')
import stackexchange
so = stackexchange.Site(stackexchange.StackOverflow)
term= raw_input("Enter the keyword for Stack Exchange")
print ''Searching for %s...'' % term,
sys.stdout.flush()
qs = so.search(intitle=term)
print ''/r--- questions with "%s" in title ---'' % (term)
for q in qs:
print ''%8d %s'' % (q.id, q.title)
with open(''E:/questi.txt'', ''a+'') as question:
question.write(q.title)
time.sleep(10)
with open(''E:/questi.txt'') as intxt:
data = intxt.read()
regular = re.findall(''[aA-zZ]+'', data)
print(regular)
tokens = set(regular)
with open(''D:/Dictionary.txt'', ''r'') as keywords:
keyset = set(keywords.read().split())
with open(''D:/Questionmatches.txt'', ''w'') as matches:
for word in keyset:
if word in tokens:
matches.write(word + ''/n'')
q.title
es una cadena Unicode. Al escribir eso en un archivo, primero debe codificarlo, preferiblemente una codificación totalmente compatible con Unicode como UTF-8
(si no lo hace, Python usará el códec ASCII
que no admite ningún punto de código de caracteres) 127
).
question.write(q.title.encode("utf-8"))
debe solucionar el problema.
Por cierto, el programa se disparó en el carácter “
( U+201C
).