gpt4 book ai didi

python - 'UCS- 2' codec can' t 对位置 61-61 中的字符进行编码

转载 作者:太空宇宙 更新时间:2023-11-03 14:54:01 26 4
gpt4 key购买 nike

当我运行 Python 代码并 print(item) 时,出现以下错误:

UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 61-61: Non-BMP character not supported in Tk

这是我的代码:

def getUserFollowers(self, usernameId, maxid = ''):
if maxid == '':
return self.SendRequest('friendships/'+ str(usernameId) +'/followers/?rank_token='+ self.rank_token,l=2)
else:
return self.SendRequest('friendships/'+ str(usernameId) +'/followers/?rank_token='+ self.rank_token + '&max_id='+ str(maxid))
def getTotalFollowers(self,usernameId):
followers = []
next_max_id = ''
while 1:
self.getUserFollowers(usernameId,next_max_id)
temp = self.LastJson

for item in temp["users"]:
print(item)
followers.append(item)

if temp["big_list"] == False:
return followers
next_max_id = temp["next_max_id"]

我该如何解决这个问题?

最佳答案

在不知道 temp["users"] 内容的情况下很难猜测,但错误表明它包含非 BMP unicode 字符,例如 emoji .

如果您尝试在 IDLE 中显示该内容,您会立即收到此类错误。重现的简单示例(在 Python 3.5 的 IDLE 上):

>>> t = "ab \U0001F600 cd"
>>> print(t)
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
print(t)
UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 3-3: Non-BMP character not supported in Tk

(\U0001F600 表示 unicode 字符 U+1F600 笑脸)

该错误确实是由于 Tk 不支持代码大于 FFFF 的 unicode 字符引起的。一个简单的解决方法是将它们从字符串中过滤掉:

def BMP(s):
return "".join((i if ord(i) < 10000 else '\ufffd' for i in s))

'\ufffd' 是 unicode U+FFFD 替换字符的 Python 表示形式。

我的例子变成:

>>> t = "ab \U0001F600 cd"
>>> print(BMP(t))
ab � cd

所以你的代码将变成:

for item in temp["users"]:
print(BMP(item))
followers.append(item)

关于python - 'UCS- 2' codec can' t 对位置 61-61 中的字符进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45715280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com