IA具有不斷更新以下數據容器:UnicodeEncodeError:「ASCII」編解碼器不能編碼
data = []
for val, track_id in zip(values,list(track_ids)):
#below
if val < threshold:
#structure data as dictionary
pre_data = {"artist": sp.track(track_id)['artists'][0]['name'], "track":sp.track(track_id)['name'], "feature": filter_name, "value": val}
data.append(pre_data)
#write to file
with open('db/json/' + user + '_' + product + '_' + filter_name + '.json', 'w') as f:
json.dump(data,f, ensure_ascii=False, indent=4, sort_keys=True)
,但我越來越喜歡這個有很多的錯誤:
json.dump(data,f, ensure_ascii=False, indent=4, sort_keys=True) File"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 190, in dump fp.write(chunk)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 6: ordinal not in range(128)
有沒有辦法擺脫這種編碼問題一勞永逸?
有人告訴我,這將做到這一點:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
但很多人不建議這樣做。
我用python 2.7.10
任何線索?
顯示完整的錯誤跟蹤,所以我們可以看到錯誤來自哪裏。這是Python 2還是3? –
'sys.setdefaultencoding'可能在Python2中工作,但在Python3中不存在。它可以與'print()'一起使用,但不能與寫入文件等其他內容一起使用,因此您必須顯示完整的錯誤消息和產生問題的行。 – furas
@MarkRansom更新,謝謝 –