tkinter.TclError: 字符 U+1f449 超出了 Tcl 允许的范围 (U+0000-U+FFFF)

beg*_*ner 7 python twitter tkinter tweepy

我正在尝试使用 tweepy 在 Tkinter 窗口上显示我的 twitter 时间线。这是代码

import tweepy
import tkinter

consumer_key = 'xxxxxxxxxxxxxx'
consumer_sec ='xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
acc_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
acc_token_sec = 'xxxxxxxxxxxxxxxxxxxxxx'
auth = tweepy.OAuthHandler(consumer_key,consumer_sec)
auth.set_access_token(acc_token,acc_token_sec)

api = tweepy.API(auth)

tweets = api.home_timeline()

tkwindow = tkinter.Tk()

for tweet in tweets:
    i = 1
    label = tkinter.Label(tkwindow, text=tweet.author.name + " " + str(tweet.created_at) + "\n" + str(tweet.text))
    if i == 5:
        break
tkwindow.mainloop()
Run Code Online (Sandbox Code Playgroud)

但我有以下错误

_tkinter.TclError: 字符 U+1f449 超出了 Tcl 允许的范围 (U+0000-U+FFFF)

我知道 tkinter 无法显示一些出现在真实推文中的特殊图标,但实际上,我不想显示这些,我只想显示推文的简单文本,

那么我如何避免此错误并仅显示推文的文本

Tem*_*lla 6

最简单的方法是删除多余的字符。这可以通过在 for 循环开始处使用以下代码来完成:

char_list = [tweet[j] for j in range(len(tweet)) if ord(tweet[j]) in range(65536)]
tweet=''
for j in char_list:
    tweet=tweet+j
Run Code Online (Sandbox Code Playgroud)