我正在使用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,而不是字节。
答案 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()