發生問題:
在mobu 2020利用os 連接路徑報錯,發現以Json.load()的字典格式,為unicode
而mobu無法辨識,需先將用到字串利用string.encode('utf-8')
才能使用
後來想想覺得應是在open()時,就可以先轉換,就不用對個案一個一個轉換
在網路查了相關的關鍵字"python2.x, json.load, dict, unicode, utf-8, open"
試了多個覺得可行的方式
像是open加入encoding
或是json.dump()加入encoding
import io
都沒什麼用
最後找到這個解最簡單,原網址https://www.jianshu.com/p/90ecc5987a18
Python2.x Code Sample:
def Read_Dict_Data( Dict_Data ):
import json
def byteify(input, encoding='utf-8'):
if isinstance(input, dict):
return {byteify(key): byteify(value) for key, value in input.iteritems()}
elif isinstance(input, list):
return [byteify(element) for element in input]
elif isinstance(input, unicode):
return input.encode(encoding)
else:
return input
with open ( Dict_Data )as f:
data = json.load(f, encoding = 'UTF-8')# it is useless adding encoding when use json.load()
return byteify(data)
如果是Python3就沒有以上問題
多數網頁都沒清楚的說明python2與3的差別,所以記錄一下
No comments:
Post a Comment