option = {'lang_id':1}
result = aipNlp.wordseg('你好百度。',option)
官方文档上的代码,我出现了这样的问题。
File "C:\python3.5\lib\site-packages\aip\nlp.py", line 79, in wordseg
return self._request(self.__wordsegUrl, self.__processData(data))
File "C:\python3.5\lib\site-packages\aip\nlp.py", line 55, in __processData
return json.dumps(content)
File "C:\python3.5\lib\json\__init__.py", line 230, in dumps
return _default_encoder.encode(obj)
File "C:\python3.5\lib\json\encoder.py", line 198, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\python3.5\lib\json\encoder.py", line 256, in iterencode
return _iterencode(o, 0)
File "C:\python3.5\lib\json\encoder.py", line 179, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: b'\xc4\xe3\xba\xc3\xb0\xd9\xb6\xc8\xa1\xa3' is not JSON serializable
新手不懂,请问怎么解决。
问题解决了。
原因是百度的nlp.py中有这样一个函数:
def __encode(self, s):
"""
编码
"""
if sys.version_info.major == 2:
if not isinstance(s, unicode):
s = s.decode('utf8')
return s.encode('gbk')
最后一句在python3+的版本中不用再编码,直接return s即可
我也遇到一样的问题,在python2.7版里文件头加# -*-coding:utf-8 -*-。再将文字编码处理一下就对了:u"你好百度。".encode("utf-8")。
但在python3.6版里报和楼主一样的错。
我开头已经注明了# -*-coding:utf-8 -*- 默认编码就是utf-8 。
编码不对,文件头写下编码,# -*-coding:utf-8 -*-
TypeError: b'\xc4\xe3\xba\xc3\xb0\xd9\xb6\xc8\xa1\xa3' is not JSON serializable 请问这是个什么错误?