我知道发布了类似的问题,但我认为我遇到的问题与他们相比略有不同。请多多包涵;我4个月前才开始使用Python,我确信我的不成熟表现了!
我正在编写一个程序,使用树形图中的Protovis插件显示CSV文件中的LinkedIn数据。据我所见,该插件设置正确,这完全基于O' Reilly的挖掘社交网络。但是,当我在IDLE中运行我的代码时,我收到以下错误消息:
Traceback (most recent call last):
File "C:/Users/Envy 15/Desktop/MASIDendo", line 115, in <module>
html = open(HTML_TEMPLATE).read() % (json.dumps(json_output),)
File "C:\Python27\lib\json\__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "C:\Python27\lib\json\encoder.py", line 201, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Python27\lib\json\encoder.py", line 264, in iterencode
return _iterencode(o, 0)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x96 in position 17: invalid start `byte`
现在据我所知,Unicode错误的原因是我的一个文件名中存在非Unicode字符,但是我已经检查了它们,而事实并非如此。我指向的代码部分是:
html = open(HTML_TEMPLATE).read() % (json.dumps(json_output),)
f = open(os.path.join(os.getcwd(), 'out', OUT), 'w')
f.write(html)
f.close()
print 'Data file written to: %s' % f.name
# Open up the web page in your browser
webbrowser.open('file://' + f.name)
非常感谢任何帮助!
答案 0 :(得分:2)
检查你的基础,验证json_data的内容,使用repr()或pprint.pprint()。
str和unicode对象具有接受errors参数的编码和解码方法,如下所示:"\x66\x89".decode("utf-8", "replace")
json.dumps将数据编码为json,将json_output
作为输入传递给它是很奇怪的。
答案 1 :(得分:0)
听起来你的json_output
对象中有一个字符串,它不是unicode或unicode-encodable。这不是文件名的问题。