您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
01 訂閱鏈接轉yaml在線解析json字符(pytest測試框架-數據驅動 yaml/excel/csv/json)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-06-16 04:37:04【】0人已围观
简介python3對象|字典|json|yaml|字符串相互轉化在研究k8s的yaml配置文件的時候,我總擔心自己一不小心會寫錯,所以我向往使用將對象序列化yaml的形式,其實pythonobject可以
python3 對象 |字典|json|yaml|字符串 相互轉化
在研究 k8s 的yaml 配置文件的時候,我總擔心自己一不小心 會寫錯,所以我向往 使用將對象 序列化 yaml 的形式,
其實 python object 可以 直接 轉 yaml ,甚至也可以 直接 轉成yaml文件!!!
這里 會經常用到幾個 函數 vars() ast.
我們先嘗試用最笨的方法 實現 object到yaml 的轉化
在python對象 買粉絲nvert to dict 的形式,使用 vars()函數
然后 dict 買粉絲nvert to json 使用 json.mps(dict)函數
然后 json 買粉絲nverte to yaml 使用 ya= yaml.load(json.mps(dict)) 然后
再 yaml.safe_mp(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’,可以在使用之前進行轉換,有以下實例,來自: 買粉絲://stackoverflow.買粉絲/questions/33054527/python-3-5-typeerror-a-bytes-like-object-is-required-not-str 】
其實 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 [plicate]
】
打開 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()與mp()方法的使用
mp()方法的使用
超越XML和JSON:YAML,Java開發人員的新選擇
為Java開發者對YAML文件格式做一個高級介紹 找出它與XML和JSON的不同之處 并檢驗它的優越性和缺陷
所有動態語言(如Ruby Groovy Python等)及其相關的框架(如Ruby on rails)百家爭鳴 盡管閱讀本文的大部分Java開發者每天的大多數工作都是處理純粹的Java 且未來多年都將如此 但這并不意味著他們不能學習新的知識 在他們的兵器庫中添加新的兵器 本文介紹YAML(YAML不是標記語言的簡寫)文件格式(使用Ruby on rails框架進行講解 因為它所有的配置文件都是使用的YAML)以及它與XML和JSON的區別 最后討論了YAML的優勢和缺點
空格縮進和JSON選項
YAML文件格式主要集中于空格縮進的概念 它用于指出數據的層次結構 – 而不是使用XML嵌套標記或JSON的大括號({ })和方括號([]) 實際上 它是JSON的一個超集 因此 在使用的時候 你可能需要采用JSON風格的語法來跳出空格流 它的創始人將其形容為 為所有編程語言提供人性化的數據序列化標準 以我的經驗來看 其重點是人性化 下面是一個使用空格縮進的YAML樣例 創建YAML文件時不宜使用固定寬度字體 因為空格是很關鍵的 (參考側邊欄 YAML和標簽
JFrame: defaultCloseOperation: JFrame EXIT_ON_CLOSE title: Test Frame width: height: ponents: JTextArea: name: textArea text: | This is a really long text that spans multiple lines (but preserves new lines) It does not need to be escaped with special brackets CDATA tags or anything like that JButton: name: button text: Button
側邊欄 YAML和標簽 基于空格縮進的任一文件格式最常見的問題之一是如何解釋標簽 在這個YAML例子中 答案相當簡單 它不支持標簽 使用標簽字符縮進代替空格將會導致處理異常
隨你喜歡 你可以在任何節點使用JSON風格語法或混合語法 例如 上面的例子可改為
JFrame: defaultCloseOperation: JFrame EXIT_ON_CLOSE title: Test Frame width: height: ponents: JTextArea: name: textArea text: | This is a really long text that spans multiple lines (but preserves new lines) It does not need to be escaped with special brackets CDATA tags or anything like that JButton: { name: button text: Button } #JSON風格語法
在底層節點(即它們沒有子節點 正如你猜測的那樣 井號鍵在YAML中是用來注釋的)切換使用JSON風格語法顯得特別有用
YAML結構組件
前面已經看了一個簡單的YAML例子 下面讓我們一起來了解一下YAML的結構 hash list 和block literal
hash(散列)
通過縮進子段和在關鍵字與值之間使用冒號(:)來分割實現hash的創建 如
JFrame: defaultCloseOperation: JFrame EXIT_ON_CLOSE title: Test Frame width: height:
還有一種方法就是使用與JSON兼容的大括號語法({ })語法 每一對關鍵字/值使用逗號( )分割 如
JFrame: { defaultCloseOperation: JFrame EXIT_ON_CLOSE title: Test Frame
width: height: }
list(清單)
通過在每個list元素前放一個減號( )來創建list 與空格縮進一起構成了YAML的基石
ponents: JTextArea Jbutton
還有一種方法就是使用JSON兼容的方括號([])語法 如
ponents: [JTextArea JButton]
block literal(文字塊)
這是YAML的亮點 特別是與XML相比 它的CDATA顯得相當簡陋 block literal可以將大塊文本細致地插入文件中 你可以使用豎線(|)指令在你的文本中保留新行 如
text: | This is a really long text that spans multiple lines (but preserves new lines) It does not need to be escaped with special brackets CDATA tags
很赞哦!(944)
相关文章
- 01 youtube下載官網手機版入口買粉絲(手機怎么進入pourhub官網?)
- 01 youtube下載官網手機官網報價下單(手機油管怎么復制鏈接)
- 01 2022買粉絲關注排行榜(全屋定制十大名牌排行2022)
- 01 youtube下載官網手機版在線看(為何下載不了YOUTUBE的影片)
- 01 youtube下載官網地址電腦怎么設置(mac系統下如何用迅雷)
- 01 2022全球數字貿易大會主題論壇(2022年12月14日首屆全球數字貿易博覽會在哪里閉幕)
- 01 2021電視劇播放量排行榜前十名(最近電視劇排名最火的前十位2022當下最火十部連續劇)
- 01 2021年國際貿易熱點話題(當前熱點話題)
- 01 2022外貿形勢分析(2022年國內外貿出口數據是否真實)
- 01 2022中國進出口貿易數據分析圖表(買粉絲數據分析報告怎么看2022)
热门文章
站长推荐
01 2021年外貿出口總額(對外貿易依存度)
01 2021年山東外貿職業學院教師招聘(如果給你重新選擇的機會你會選擇什么樣的專業?)
01 youtube下載官網手機版入口免登錄(請問最好用的在線二維碼生成器有哪些)
01 2022全球數字貿易大會主題(下載量近5億次!亞馬遜再成印度霸主)
01 2022華語音樂播放量排行榜(2022applemusic前一百首排名在哪看)
01 youtube下載官網地址電腦軟件怎么(嗶哩嗶哩網頁版怎么下載視頻到本地啊?)
01 2022年4月進出口貿易數據(2022年第三季度貨幣供應量以及增長率如何計算)
01 2021福州十大網紅打卡地(福州十大網紅打卡地)