Lorsque j'exécute mon Python, j'obtiens les erreurs suivantes:
File "E:\python343\crawler.py", line 31, in <module>
print (x1)
File "E:\python343\lib\idlelib\PyShell.py", line 1347, in write
return self.Shell.write(s, self.tags)
UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 1050-1050: Non-BMP character not supported in Tk
Voici mon code:
x = g.request('search', {'q' : 'TaylorSwift', 'type' : 'page', 'limit' : 100})['data'][0]['id']
# GET ALL STATUS POST ON PARTICULAR PAGE(X=PAGE ID)
for x1 in g.get_connections(x, 'feed')['data']:
print (x1)
for x2 in x1:
print (x2)
if(x2[1]=='status'):
x2['message']
Comment puis-je réparer cela?
Vos données contiennent des caractères en dehors de Plan multilingue de base . Les Emoji par exemple, sont en dehors du BMP, et le système de fenêtres utilisé par IDLE, Tk, ne peut pas gérer de tels caractères.
Vous pouvez utiliser un table de traduction pour tout mapper en dehors du BMP au caractère de remplacement :
import sys
non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)
print(x.translate(non_bmp_map))
Le non_bmp_map
mappe tous les points de code en dehors de BMP (tout point de code supérieur à 0xFFFF, jusqu'au point de code Unicode le plus élevé Python peut poignée ) à + FFFD REMPLACEMENT CHARACTER :
>>> print('This works outside IDLE! \U0001F44D')
This works outside IDLE! ????
>>> print('This works in IDLE too! \U0001F44D'.translate(non_bmp_map))
This works in IDLE too! �
Rien de tout cela n'a fonctionné pour moi, mais ce qui suit fonctionne. Cela suppose que public_tweets a été extrait de tweepy api.search
for Tweet in public_tweets:
print (Tweet.text)
u=Tweet.text
u=u.encode('unicode-escape').decode('utf-8')
ce problème unicode a été observé dans python 3.6 et versions antérieures, pour le résoudre, il suffit de mettre à niveau python as python 3.8 et utilisez votre code. Cette erreur ne se produira pas.