TypeError:write()参数必须为str,而不是EntityAnnotation

时间:2019-01-08 14:42:21

标签: python

我正在使用Google视觉api从图像中提取文本,并且我还希望将此文本存储在.txt文件中。

每当我使用f.write(text.description)时,我都会得到:

  

UnicodeEncodeError

有了f.write(text),它给了我:

  

TypeError:write()参数必须为str,而不是EntityAnnotation

f.write(text.description.encode("utf-8"))给我:

  

TypeError:write()参数必须为str,而不是字节。

2 个答案:

答案 0 :(得分:0)

您正在尝试编写类型为EntityAnnotation的变量,它是Json对象而不是str。检出EntityAnnotation - Google Cloud Vision,在位置标签上,您可以找到结构的制作方法。可能您正在尝试编写其中分配的一些信息。

请记住,您可以通过将整个对象设置为字符串str(json_objt)或使用 json.dumps(json_obj),以便将json_obj序列化为JSON格式的str

答案 1 :(得分:0)

看起来text.description包含无法用文件系统的默认编码进行编码的字符。在默认文件系统编码为cp1252的Windows机器上可能会出现这种情况,但在其他平台上也可能出现这种情况,具体取决于它们的配置方式。

打开文件时,可以通过指定不同的编码来解决此问题-utf-8通常是不错的选择。

with open('myfile.txt', 'w', encoding='utf-8') as f:
    f.write(text.description)

请注意,如果您尝试从文件中读取文件,则需要指定编码:

with open('myfile.txt', 'r', encoding='utf-8') as f:
    description = f.read()