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”==吧。