python python-2.7 pyscripter stackexchange-api

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 ).