UnicodeEncodeError:“ascii”编解码器无法对位置02中的字符进行编码:序号不在范围内(128)

2024-09-30 16:23:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图编写一个相当复杂的Python程序,但基本上已经完成了。我在一个小细节上遇到了麻烦。在

有问题的代码部分如下:

newData = kmeans.sampleNewData(200, means, covariances, priors)

newData = newData.astype(str)
...loops and logic and stuff...
newData[i, j] = columnsList[j][(indexList[j]).index(closestFit)]

基本上,newData是一个大小为200x4的numpy矩阵,填充了float类型的数字。然后我使用astype方法将它们转换为字符串。在

然后我尝试将这个columnsList[j][(indexList[j]).index(closestFit)]这个字符串放入newData的条目中。在

问题是columnsList[j][(indexList[j]).index(closestFit)]不一定是英语。例如,它可以是希伯来语。在这种情况下-我得到了错误

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

值得注意的是,我写了# -*- coding: utf-8 -*-,所以我们用utf-8编码,当我打印columnsList[j][(indexList[j]).index(closestFit)]时,它确实打印了正确的值。所以我们可以打印出来。但由于某些原因,我不能把它放入newData矩阵中。在


Tags: and字符串代码in程序index矩阵细节
1条回答
网友
1楼 · 发布于 2024-09-30 16:23:25

Encode是当您试图从某个字符串类型转换为字节时的操作。您的columnsList[j][(indexList[j]).index(closestFit)]似乎包含Unicode字符串,请尝试一下

newData[i, j] = columnsList[j][(indexList[j]).index(closestFit)].encode('utf-8')

相反。在

相关问题 更多 >