python 字符串str和json格式轉換


最近在寫一個腳本,需要處理從excel中讀取的數據,發現讀取的json格式數據進行轉換時報錯

ValueError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
網上查了是因為json的key沒有雙引號,導致json解析錯誤的。
為了處理讀取的數據從str轉換為json查了一下str和json格式轉換:

1.)str轉json
str轉換為json格式,前提一定需要保證這個str的格式和json是一致的,即左邊最外層是大括號,右邊的最外層是大括號。如果不一致,推薦用正則進行拆分至和json格式一致
    1. 通過json.loads進行轉換

1 import json
2 str = '{"key": "wwww", "word": "qqqq"}'
3 j = json.loads(str)
4 print(j)
5 print(type(j))

但是值得注意的是,json中內部數據需要用雙引號來包圍,不能使用單引號,如剛才的寫法,如果寫成這樣,就會發生錯誤:

str = “{‘key’: ‘wwww’, ‘word’: ‘qqqq’}“
j = json.loads(str)

2. 通過eval
eval函數的官方解釋為:將字符串str當成有效的表達式來求值並返回計算結果。
即通過eval可以把list,tuple,dict和string相互轉化,例如:
a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
b = eval(a)
type(b)
list
a = "{1: 'a', 2: 'b'}"
b = eval(a)
type(b)
dict
a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
b = eval(a)
type(b)
tuple

同樣,值得注意的是,eval()可以通過運行系統的命令,如:
eval("__import__('os').startfile('notepad.exe')") #啟動記事本程序
那么為了保證安全,當需要用戶輸入時,可以對用戶輸入進行敏感字符檢查和過濾

3. literal_eval
和eval用法相同,都可以將字符串str解析成list,tuple,dict,而且避免了eval的安全性的問題

import ast
a = "{1: 'a', 2: 'b'}"
b = ast.literal_eval(a)
type(b)
dict

json轉str

使用json.dumps的方法,可以將json對象轉化為字符串

data = {'name':'wjp','age':'22'}
data = json.dumps(data)

原文:https://blog.csdn.net/qq_29027865/article/details/83819049

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM