【python】json轉成成yaml中文編碼異常顯示成:\u5317\u4EAC\u8DEF123\u53F7

姊妹篇:【python】json轉成成yaml
json數據

{"name": "張三","age": 30,"isMarried": false,"children": [{"name": "小王","age": 5},{"name": "小李","age": 3}],"address": {"street": "北京路123號","city": "北京市","postalCode": "100000"},"email": "zhangsan@example.com","phoneNumbers": [{"type": "home","number": "2341234"},{"type": "office","number": "5678901"}],"login": {"username": "zhangsan","password": "password123"},"cart": [{"product": {"name": "筆記本電腦","price": 1199.99,"quantity": 2}},{"product": {"name": "智能手機","price": 599.99,"quantity": 1}}]
}

code v1

# -- coding:utf-8 --
import json, yaml, osBASE_DIR = os.path.dirname(os.path.abspath(__file__))def jsonToYaml(jsonPath, yamlPath):with open(jsonPath, "r", encoding='utf-8') as f:f_json = json.load(f)with open(yamlPath, "w", encoding='utf-8') as f:f_yaml = yaml.dump(f_json)yaml.dump(yaml.safe_load(f_yaml), f, sort_keys=False)if __name__ == '__main__':jsonPath = "data.json"yamlPath = "data.yaml"jsonPath = os.path.join(BASE_DIR, jsonPath)yamlPath = os.path.join(BASE_DIR, yamlPath)jsonToYaml(jsonPath, yamlPath)

轉化后:
在這里插入圖片描述
轉化后發現中文顯示不是那么友善,全變成了:\u5317\u4EAC\u8DEF123\u53F7,這種形式;
主要原因:
在PyYAML中,默認的編碼是UTF-8,但是如果你的字符串包含非UTF-8字符,比如中文,你可能需要指定一個不同的編碼。在你的代碼中,你可能需要指定在寫入YAML文件時使用的編碼是UTF-8,而不是默認的編碼。

另外,當你使用 yaml.dump() 時,如果你想要保持中文等非ASCII字符的可讀性,你應該使用 default_flow_style=False 參數,這樣YAML文件將以塊樣式編寫,而不是流動樣式。

修改后的代碼:

# -- coding:utf-8 --
import json, yaml, osBASE_DIR = os.path.dirname(os.path.abspath(__file__))def jsonToYaml(jsonPath, yamlPath):with open(jsonPath, "r", encoding='utf-8') as f:f_json = json.load(f)with open(yamlPath, "w", encoding='utf-8') as f:f_yaml = yaml.dump(f_json)# yaml.dump(yaml.safe_load(f_yaml), f, sort_keys=False)# 使用safe_dump以避免潛在的安全風險,除非你完全信任源數據yaml.safe_dump(f_json, f, default_flow_style=False, allow_unicode=True)if __name__ == '__main__':jsonPath = "data.json"yamlPath = "data.yaml"jsonPath = os.path.join(BASE_DIR, jsonPath)yamlPath = os.path.join(BASE_DIR, yamlPath)jsonToYaml(jsonPath, yamlPath)

轉換后的結果:

address:city: 北京市postalCode: '100000'street: 北京路123號
age: 30
cart:
- product:name: 筆記本電腦price: 1199.99quantity: 2
- product:name: 智能手機price: 599.99quantity: 1
children:
- age: 5name: 小王
- age: 3name: 小李
email: zhangsan@example.com
isMarried: false
login:password: password123username: zhangsan
name: 張三
phoneNumbers:
- number: '2341234'type: home
- number: '5678901'type: office

在本文中,我們探討了技術性文章博客的重要性,它不僅能提升個人品牌,還能促進知識共享和技能成長。通過選擇合適的平臺、保持專業性和真誠性,并利用SEO和社交媒體策略來提高可見性,任何人都可以成功地撰寫和推廣技術性文章博客。記住,持續學習和實踐是提升技術能力的的關鍵,而寫作是這一旅程中的寶貴工具。讓我們開始撰寫影響未來的技術故事吧!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714385.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714385.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714385.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql冷備

數據庫備份類型 冷備份:在數據庫停止服務的情況下進行備份 熱備份:在數據庫處于運行狀態下進行備份 溫備份:不可寫但可讀的情況下進行備份 冷備分時,只需要在停止數據庫后,拷貝數據目錄到另一個地方即可。 mysql 啟…

為什么不能啟動游戲錯誤代碼126 加載bugreportnew.dll失敗

錯誤代碼126通常表示在嘗試加載某個動態鏈接庫(DLL)文件時出現了問題。在您提到的例子中,bugreportnew.dll 文件未能成功加載,這可能是由于以下幾個原因: 騰訊云2024新春采購節優惠活動入口:https://curl.q…

Linux---進程信號

一、信號的概念 信號是一種向目標進程發送通知消息的機制 信號的特性(可以結合紅綠燈、防空警報等生活樣例來理解) 1、在信號沒有出現之前,我們就已經知道如何去處理信號,即我們認識信號 2、信號是異步產生的,即我們不知道它具體何時產生 3、…

基于MQTT協議實現微服務架構事件總線

一、場景描述 昨天在博客《客戶端訂閱服務端事件的實現方法》中提出了利用websocket、服務端EventEmitter和客戶端mitt實現客戶端訂閱服務端事件,大大簡化了客戶端對服務端數據實時響應的邏輯。上述方案適用于單服務節點的情形。 對于由服務集群支撐的微服務架構&…

Redis 之七:穿透、擊穿、雪崩

(本內容部分來自知乎網等網絡) Redis 緩存的使用,極大的提升了應用程序的性能和效率,特別是數據查詢方面。但同時,它也帶來了一些問題。其中,最要害的問題,就是數據的一致性問題,從嚴…

Educational Codeforces Round 132 (Rated for Div. 2) E. XOR Tree(啟發式合并+貪心)

題目 n(n<2e5)個點的樹&#xff0c;點i權值ai&#xff08;1<ai<2^30&#xff09; 修改最少的點的權值&#xff0c;使得樹上不存在異或和為0的簡單路徑&#xff0c;輸出最少的點數 權值可以被修改成任意正整數&#xff08;可以是無限大&#xff09; 思路來源 官方…

【leetcode】環形鏈表?環形鏈表II

大家好&#xff0c;我是蘇貝&#xff0c;本篇博客帶大家刷題&#xff0c;如果你覺得我寫的還不錯的話&#xff0c;可以給我一個贊&#x1f44d;嗎&#xff0c;感謝?? 目錄 1.環形鏈表解題拓展&#xff1a; 2.環形鏈表II 1.環形鏈表 點擊查看題目 解題 思路: bool hasCycle…

【算法集訓】基礎算法:基礎排序 - 插入排序

一、基本理解 插入排序(nsertion Sort)&#xff0c;一般也被稱為直接插入排序&#xff0c;是一種簡單直觀的排序算法。 **工作原理&#xff1a;**將待排列元素劃分為「已排序」和「未排序」兩部分&#xff0c;每次從「未排序的」元素中選 擇一個插入到「已排序的」元素中的正確…

劍指offer58—II 左旋轉字符串 c++

題目 字符串的左旋轉操作是把字符串前面的若干個字符轉移到字符串的尾部。請定義一個函數實現字符串左旋轉操作的功能。比如,輸入字符串"abcdefg"和數字2,該函數將返回左旋轉兩位得到的結果"cdefgab"。 示例 1: 輸入: s = “abcdefg”, k = 2 輸出: “…

MySQL 多表查詢 連接查詢 內連接

介紹 內連接查詢是兩張表中交集的部分 連接模式 隱式內連接 SELECT 字段列表 FROM 表1,表2 WHERE 條件顯式內連接 SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 連接條件案例 有兩張表一個表為學生表&#xff0c;另一個表為班級表&#xff0c;現在需要查詢學生時候在查…

接口測試(全)

&#x1f345; 視頻學習&#xff1a;文末有免費的配套視頻可觀看 &#x1f345; 關注公眾號【互聯網雜貨鋪】&#xff0c;回復 1 &#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 大多數人對于接口測試都覺得是一種高大上的測試&#xff0c;覺得…

羊大師分析,羊奶粉適合什么樣的人群喝

羊大師分析&#xff0c;羊奶粉適合什么樣的人群喝 羊奶粉適合多種人群食用&#xff0c;包括兒童、老年人、孕婦以及身體虛弱或處于疾病康復期的人群。 對于兒童來說&#xff0c;羊奶粉是一種很好的營養品。它含有豐富的蛋白質、脂肪、礦物質和維生素&#xff0c;能夠滿足兒童…

【前端素材】推薦優質后臺管理系統網頁Star admin平臺模板(附源碼)

一、需求分析 1、系統定義 后臺管理系統是一種用于管理和控制網站、應用程序或系統的管理界面。它通常被設計用來讓網站或應用程序的管理員或運營人員管理內容、用戶、數據以及其他相關功能。后臺管理系統是一種用于管理網站、應用程序或系統的工具&#xff0c;通常由管理員使…

三種圖片預覽插件viewer、vue-photo-preview、vue-picture-preview

第一種&#xff1a;viewerjs使用介紹 1、先安裝依賴 npm install v-viewer --save2、main.js內引用并注冊調用 //main.js import Viewer from ‘v-viewer’ import ‘viewerjs/dist/viewer.css’ Vue.use(Viewer); Viewer.setDefaults({ Options: { “inline”: true, “butt…

王志亮出席海爾智慧樓宇發酵行業的低碳節能解決方案

演講嘉賓&#xff1a;王志亮 食品醫藥用戶群總監 青島海爾空調電子有限公司 演講題目&#xff1a;海爾智慧樓宇在發酵行業的低碳、節能解決方案 會議簡介 “十四五”規劃中提出&#xff0c;提高工業、能源領城智能化與信息化融合&#xff0c;明確“低碳經濟”新的戰略目標&…

System Verilog學習筆記(十一)——數組(1)

System Verilog學習筆記&#xff08;十一&#xff09;——數組&#xff08;1&#xff09; 非組合型&#xff08;unpacked&#xff09; 成員之間存儲數據都是相互獨立的可以索引非組合型數組或者數組片段的能力聲明方式&#xff1a; logic [31&#xff1a;0] data [1024]; lo…

黑馬JUC筆記

黑馬JUC筆記 1.概覽 2.進程與線程 2.1 進程與線程 進程 程序由指令和數據組成&#xff0c;但這些指令要運行&#xff0c;數據要讀寫&#xff0c;就必須將指令加載至 CPU&#xff0c;數據加載至內存。在 指令運行過程中還需要用到磁盤、網絡等設備。進程就是用來加載指令、管…

Cisco Secure ACS 5.8.0.32 安裝 + Crack 教程

Cisco Secure ACS 5.8.0.32 安裝 Crack 教程 前言系統環境開始安裝 開始破解導入授權文件 前言 在ESXi 6.7 上經歷過無數次的安裝嘗試 測試了各種兼容版本都沒有安裝成功,記最后一次安裝成功的過程. 系統環境 服務器 : Dell R720xd CPU : E5-2620 v2 系統 : ESXi 6.7…

簡單控件屬性設置

1、設置文本的內容 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"…

十四、Qt主機信息與網絡編程

一、主機信息 1、主機信息接口 QHostInfo&#xff1a;獲取主機名稱和IP地址QNetWorkInterface&#xff1a;獲取主機的所有網絡接口&#xff0c;包括子網掩碼和廣播地址等 &#xff08;1&#xff09;使用 項目添加模塊QT network2、實現程序 &#xff08;1&#xff0…