TypeError: expected string or bytes-like object
报错代码:
def json(self,strs, key):
#print(type(strs))
strs =str(strs)
strs = re.sub("'",'"',strs)
#print(strs)
dict_ = json.loads(strs)
if dict_:
return list(i[key] for i in dict_)
else:
return np.NaN
原因是strs是非字符或者非bytes-like,我的错误是非字符,但是比较难想到的他是空值,所以在数据处理前应按部就班,先好好地处理空值,再进行下一步,不然就被自己坑死了。
代码优化:
def json(self,strs, key):
#改了下面两行
if type(strs) ==float:
return []
#print(type(strs))
strs =str(strs)
strs = re.sub("'",'"',strs)
#print(strs)
dict_ = json.loads(strs)
if dict_:
return list(i[key] for i in dict_)
else:
return np.NaN
也就是添加了一个处理空值的判断条件,因为空值被分类在浮点型里面,所以孔易用type来判断,欲知详情百度一下==“np.NaN==np.NaN”==吧。