本文目錄一覽:
- 1、python3 讀excel轉Json文件
- 2、python 字符串轉 json
- 3、【Python】淺談python中的json
- 4、python3 對象 |字典|json|yaml|字符串 相互轉化
- 5、python之json格式轉化
- 6、python怎麼轉化成json格式
python3 讀excel轉Json文件
from xlrd import *
import json
# 參考1-字典、列錶轉JSON:
# 參考2-JSON直接保存到文件:
# 從excel讀取數據存放到列表中
def readExcel():
keyData=[] # 定義空List,用於保存讀到的行數據
excelBook=open_workbook(“data.xlsx”) # 從當前目錄讀取《data.xlsx》文件
table=excelBook.sheet_by_name(“data”) # 從《data.xlsx》中找名為 data的sheet頁
rowNum=table.nrows # 獲取《data.xlsx》–data頁中 行數
colNum=table.ncols # 獲取《data.xlsx》–data頁中 列數
colName=table.row_values(0) # 取第一行數據,即列名,colName 是個List
# print(colName)
if rowNum=1:
print(“沒數據…”) # 如果行數=1,說明沒有數據,因第1行一般定義為列名
else:
for i in range(rowNum-1):
d={} # 定義空字典,用於存放獲取到數據
values=table.row_values(i+1) # 獲取每行的數據,values最終是個List
# print(values)
for x in range(colNum): # 每個列作為字典的一組數據
d[colName[x]]=values[x] # 用colName值作為字典的key,values值作業為字典的value
# print(d)
keyData.append(d) # 讀完一行數據保存到字典,再保存到列表
# print(keyData)
return keyData # 全部數據讀完並保存到列表後,返回
# 列錶轉Json
def listToJson():
keyParam=readExcel() # 調用從excel讀取數據的函數,把數據保存到列表
CaseConfig=open(“CaseConfig.json”, mode=”w+”) # 創建json文件
CaseConfig.write(‘{\n”key”:’) # 往json文件中寫數據,先寫json的格式的{,和模塊名
# 把從excel讀取的數據轉成Json格式保存入 CaseConfig,indent=4是進行格式化,使json排版好看
json.dump(keyParam, CaseConfig, indent=4)
CaseConfig.write(‘\n}’) # 往json文件中寫數據,寫結尾的 },寫前先換行
CaseConfig.close() # 關閉json文件,必要!!
if __name__ == ‘__main__’: # 調試調用
listToJson()
python 字符串轉 json
json本身就是字符串,是符合json格式的字符串。
所以,你說的,字符串轉json,就是不正確的描述。
一般正常的用法是:
涉及到,在json字符串,來自字符變量或文件內容,和不同類型的變量,之間的轉換。
變量轉json:
json.dumps或json.dump
json轉變量:
json.loads或json.load
詳解:
【整理】Python中將(字典,列表等)變量格式化成(漂亮的,樹形的,帶縮進的,JSON方式的)字符串輸出
【整理】什麼是JSON+如何處理JSON字符串
(此處不給貼地址,請自己用google搜標題,即可找到帖子地址)
【Python】淺談python中的json
一 前言
最近一直在做開發相關的工作–基於Django的web 平台,其中需要從model層傳輸數據到view 層做數據展示或者做業務邏輯處理。我們採用通用的Json格式–Json(JavaScript Object Notation) 是一種輕量級的數據交換格式,易於閱讀和程序解析。
二 認識Json
2.1 Json 結構
常見的Json格式為 「名稱/值」對的集合,其中 值可以是對象,列表,字典,字符串等等。比如
backup_data = {“back_to_host”: “dbbk0”,
“ip_address”: “10.10.20.3”,
“host_name”: “rac4”,
“port”: 3306}
2.2 使用Json
Python的Json模塊序列化與反序列化的過程分別是 編碼和解碼。這兩個過程涉及到兩組不同的函數
編碼 把一個Python對象編碼轉換成Json字符串,json.dumps(data)/json.dump(data,file_handler)
解碼 把Json格式字符串解碼轉換成Python對象,json.loads(data)/json.load(file_handler)
在python中要使用Json模塊做相關操作,必須先導入:
import Json
2.3 主要函數
編碼函數主要有 json.dumps(data)/json.dump(data,file_handler)
json.dumps()的參數是將python對象轉換為字符串,如使用json.dumps序列化的對象json_dumps=json.dumps({‘a’:1, ‘b’:2}) ,json_dumps='{“b”: 2, “a”: 1}’
json.dump 是將內置類型序列化為json對象後寫入文件。
解碼函數主要由json.loads(data)/json.load(file_handler)
json.loads的參數是內存對象,把Json格式字符串解碼轉換成Python對象,json_loads=json.loads(d_json) #{ b”: 2, “a”: 1},使用load重新反序列化為dict
json.load()的參數針對文件句柄,比如本地有一個文件/tmp/test.json json_load=json.load(open(‘/tmp/test.json’))
具體案例參考如下:
In [3]: data={“back_to_host”: “rac1”,
…: “ip_address”: “10.215.20.3”,
…: “host_name”: “rac3”,
…: “port”: 3306}
In [7]: json_str=json.dumps(data)
In [8]: print json_str
{“ip_address”: “10.215.20.3”, “back_to_host”: “rac1”, “host_name”: “rac3”, “port”: 3306}
In [9]: json_loads=json.load(json_str)
—————————————————————————
AttributeError Traceback (most recent call last)
ipython-input-9-180506f16431 in module()
—- 1 json_loads=json.load(json_str)
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.pyc in load(fp, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
284
285 “”
注意 從上面的報錯信息來看 json.loads 傳參是字符串類型,並不是文件句柄,沒有 read()屬性。
In [10]: json_loads=json.loads(json_str)
In [11]: print json_loads
{u’back_to_host’: u’rac1′, u’ip_address’: u’10.215.20.3′, u’host_name’: u’rac3′, u’port’: 3306}
In [12]: type(json_loads)
Out[12]: dict
In [13]: type(json_str)
Out[13]: str
利用dump 將數據寫入 dump.json
In [17]: with open(‘/tmp/dump.json’,’w’) as f:
…: json.dump(json_str,f)
…:
yangyiDBA:~ yangyi$ cat /tmp/dump.json
“{\”ip_address\”: \”10.10.20.3\”, \”back_to_host\”: \”rac1\”, \”host_name\”: \”rac3\”, \”port\”: 3306}”
yangyiDBA:~ yangyi$
利用json.load 將dump.sjon的數據讀出來並賦值給 data
In [18]: with open(‘/tmp/dump.json’,’r’) as f:
…: data=json.load(f)
…:
In [19]: print data
{“ip_address”: “10.10.20.3”, “back_to_host”: “rac1”, “host_name”: “rac3”, “port”: 3306}
三 小結
本文算是一篇學習筆記,主要對比了json.loads/json.load , json.dumps/ json.dump 的使用差異 ,方便以後更好的使用json 。
以上為本次分享內容,感謝觀看。
python3 對象 |字典|json|yaml|字符串 相互轉化
在研究 k8s 的yaml 配置文件的時候,我總擔心自己一不小心 會寫錯,所以我嚮往 使用將對象 序列化 yaml 的形式,
其實 python object 可以 直接 轉 yaml ,甚至也可以 直接 轉成yaml文件!!!
這裡 會經常用到幾個 函數 vars() ast.
我們先嘗試用最笨的方法 實現 object到yaml 的轉化
在python對象 convert to dict 的形式,使用 vars()函數
然後 dict convert to json 使用 json.dumps(dict)函數
然後 json converte to yaml 使用 ya= yaml.load(json.dumps(dict)) 然後
再 yaml.safe_dump(ya,default_flow_style=False)
至此我們看到 從 python Object — dict —- json — yaml 的轉化
其中 obj dict json yaml 轉 string ,只要 str()函數即可,或者 str(vars())結合
yaml 格式 寫入到文件 ,需要注意的是, open()函數 的mode 一定要是 ‘w’ ,不能是』wb’, b代表是二進制寫入
yaml 寫入的是dict str,使用 『wb’ 會報錯,[yaml TypeError: a bytes-like object is required, not ‘str’]
【出現該錯誤往往是通過open()函數打開文本文件時,使用了『rb』屬性,如:fileHandle=open(filename,’rb’),則此時是通過二進制方式打開文件的,所以在後面處理時如果使用了str()函數,就會出現該錯誤,該錯誤不會再python2中出現。
具體解決方法有以下兩種:
第一種,在open()函數中使用『r』屬性,即文本方式讀取,而不是『rb』,以二進制文件方式讀取,可以直接解決問題。
第二種,在open()函數中使用『rb』,可以在使用之前進行轉換,有以下實例,來自: 】
其實 python object 可以 直接 轉 yaml ,甚至也可以 直接 轉成yaml文件!!!
比如我已經定義了一個 Dog python class,他有 好幾個屬性 並已經賦值初始化了
另外生成 yaml 對象
生成yaml文件
結果是
反過來 yaml —- json — 持久化 json 文件 indent=1屬性是為了讓 json 不以單行展示,而是展開
注意的是 python 的 dict 和set 很相似 ,都是 { }, set 里是list, dict 是鍵值對
【# set object is not JSON serializable [duplicate]
】
打開 demo.json
yaml — dict
yaml — python object
json — dict
json.loads()
dict– json
json.jumps()
str — dict
newdict=dict(str)
json — python object
一個python object無法直接與json轉化,只能先將對象轉化成dictionary,再轉化成json;對json,也只能先轉換成dictionary,再轉化成object,通過實踐,源碼如下:
yaml — python object
對yaml,也只能先轉換成json —dictionary,再轉化成object,通過實踐,源碼如下:
dict — -python object
python對象 默認都有一個 私有的屬性 dict 取值 就是 object的 字典形式, 賦值就就可以給對象屬性對應賦值
例如json 轉 對象
對象 轉 json
Python之dict(或對象)與json之間的互相轉化
在Python語言中,json數據與dict字典以及對象之間的轉化,是必不可少的操作。
dict字典轉json數據
對象轉json數據
json數據轉成dict字典
json數據轉成對象
json的load()與dump()方法的使用
dump()方法的使用
python之json格式轉化
import json
常用的方法
json.dumps(python_obj):把數據類型轉換成字符串
json.loads(json_string):把字符串轉換成json
json.dump():把數據類型轉換成字符串並存儲在文件中
json.load(file_stream):把文件打開,把裏面的字符串轉換成數據類型
運行結果:
python怎麼轉化成json格式
如果datas是Python的原始數據,並且datas中沒有非ascii碼,可以使用如下語句轉換為json格式:
import
json
json.dumps(datas)
當datas中含有中文等非ascii字符時,可以使用如下參數:
json.dumps(datas,
ensure_ascii=False)
如果想美化輸出格式,可以使用indent參數:
json.dumps(datas,
indent=4)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/150414.html