1. 程式人生 > >我們來討論下Python中json的處理

我們來討論下Python中json的處理

python json.dumps() json.dump()的區別
首先說明基本功能:

dumps是將dict轉化成str格式,loads是將str轉化成dict格式。

dump和load也是類似的功能,只是與檔案操作結合起來了。
下面上程式碼:

In [1]: import json
 
In [2]: a = {'name': 'wang', 'age': 29}
 
In [3]: b = json.dumps(a)
 
In [4]: print b, type(b)
{"age": 29, "name": "wang"} <type 'str'>
 
In [11]: json.loads(b)
Out[11]: {u'age': 29, u'name': u'wang'}
 
In [12]: print type(json.loads(b))
<type 'dict'>

然後再看dump和dumps的區別,見程式碼:

In [1]: import json
 
In [2]: a = {'name': 'wang', 'age': 29}
 
In [3]: b = json.dumps(a)
 
In [4]: print b, type(b)
{"age": 29, "name": "wang"} <type 'str'>
 
In [5]: c = json.dump(a)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-92dc0d929363> in <module>()
----> 1 c = json.dump(a)
 
TypeError: dump() takes at least 2 arguments (1 given)
這裡提示我們少一個引數,我們看一下幫助檔案(iPyhton中可以直接使用help(json.dumps)來檢視幫助檔案):

dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding=‘utf-8’, default=None, sort_keys=False, **kw)
Serialize obj to a JSON formatted str.

dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding=‘utf-8’, default=None, sort_keys=False, **kw)
Serialize obj

as a JSON formatted stream to fp (a
.write()-supporting file-like object).

簡單說就是dump需要一個類似於檔案指標的引數(並不是真的指標,可稱之為類檔案物件),可以與檔案操作結合,也就是說可以將dict轉成str然後存入檔案中;而dumps直接給的是str,也就是將字典轉成str。

例子見程式碼(注意檔案操作的一些小細節):

In [1]: import json
 
In [2]: a = {'name': 'wang'}
 
In [3]: fp = file('test.txt', 'w')
 
In [4]: type(fp)
Out[4]: file
 
In [5]: json.dump(a, fp)
 
In [6]: cat test.txt
 
In [7]: fp.close()
 
In [8]: cat test.txt
{"name": "wang"}
In [9]: json.load(fp)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-9-0064dabedb17> in <module>()
----> 1 json.load(fp)
 
/usr/local/Cellar/python/2.7.11/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)
    285
    286     """
--> 287     return loads(fp.read(),
    288         encoding=encoding, cls=cls, object_hook=object_hook,
    289         parse_float=parse_float, parse_int=parse_int,
 
ValueError: I/O operation on closed file
 
In [10]: fp = file('test.txt', 'r')
 
In [11]: json.load(fp)
Out[11]: {u'name': u'wang'}

相關推薦

我們討論Pythonjson處理

python json.dumps() json.dump()的區別 首先說明基本功能: dumps是將dict轉化成str格式,loads是將str轉化成dict格式。 dump和load也是類似的功能,只是與檔案操作結合起來了。 下面上程式碼: In [1]

pythonjson處理中文問題

Json處理中文問題:     關於python字串的處理問題,如果深入的研究下去,我覺得可以寫2篇文章了(實際上自己還沒整很明白),在這裡主要還是總結下使用python2.7.11處理json資料的問題。前期做介面測試,處理最多的事情就是,把資料組裝成各種協議的報文,

pythonjson檔案處理涉及的四個函式json.dumps()和json.loads()、json.dump()和json.load()的區分

一、概念理解 1、json.dumps()和json.loads()是json格式處理函式(可以這麼理解,json是字串)   (1)json.dumps()函式是將一個Python資料型別列表進行json格式的編碼(可以這麼理解,json.dumps()函式是將字典轉化為字串)   (

pythonjson檔案處理函式

import json # json.dumps():將字典轉化為字串 dict = {"age": "12"} json_info = json.dumps(dict) # json.loads():將字串轉化為字典 str = '{"age": "12"}' dict1 = json.l

簡單介紹python函數的基礎語法

想要 再次 要求 傳參 ima glob 語法 none 聲明 python 函數 定義 函數是指將一組語句的集合通過一個名字(函數名)封裝起來,要想執行這個函數,只需調用其函數名即可。 特性 減少代碼重復 使程序變得可擴展 使程序變得易於維護 函數的創建 python

python json has no attribute 'loads'

.py 尋找 load 存在 attribute 其中 行程 運行程序 sta 在python爬蟲時出現了json has no attribute ‘loads‘問題。 1 可能是沒有安裝json包,cmd-pip install json, 顯示已安裝。 2 當前盤中存

pythonjson.dump() 和 json.dumps() 有那些區別?

其他 reading 如果 data logs with open 序列 pos cme 以下內容摘自:《Python Cookbook》 json 模塊提供了一種很簡單的方式來編碼和解碼JSON數據。 其中兩個主要的函數是 json.dumps() 和 json.load

二十六、pythonjson學習

十六 bank cbc bsp python文件 Coding pickle passwd strong 1.json序列介紹:提供4個關鍵字:dumps,dump,loads,load(與pickle用法完全相同)   語法:f.write(bytes(json.dump

今天談談Python的各種排序總結,含實現代碼

pro 一個數 append 增量 ice quick 教你 指向 具體實現 下圖是各種排序方法的時間復雜度、空間復雜度和穩定性,大牛編程吧教你如何編程提升。 1.直接插入排序。 直接插入的基本思想是每一步將一個數插入到已排序的有序數列中。 python代碼實現: def

從函式的引數傳遞理解python“一切都是物件”

From Python 初學者: a = 2 其中2為物件,a可理解為貼在物件上的標籤。 物件由不可變物件和可變物件,不可變物件有數字、字串、元祖,可變物件有列表,字典,集合。 def f(x): x *= 2 a = 1 f(a) print(a) #1 b =

Pythonjson.loads()無法解析單引號字串問題的兩種解決方法

目錄 1、json檔案的儲存與載入 2、json.loads()無法解析單引號字串問題 3、解決方案 方案一:替換單引號 方案二:在使用json.loads()前使用eval()和json.dumps()進行處理 1、json檔案的儲存與載入 一般來說,我建立字典、儲

Python json模組基礎功能小結

json支援的資料型別:int, bool, str, list, dict, Null;不支援的資料型別有:set,函式等; json 的優勢,相對其他序列化資料模組,json將資料序列化為字元存入檔案後的內容易讀易懂,且可以和通行很多語言互動資料,給不同語言的程式設計師之間互通資料提供了極大的便利性;

pythonjson檔案讀寫

下面介紹json檔案的相關操作 我瞭解到Json,全名 JavaScript Object Notation,是一種輕量級的資料交換格式。Json最廣泛的應用是作為AJAX中web伺服器和客戶端的通訊的資料格式。現在也常用於http請求中,所以對json的各種學習,是自然而然的事情。

pythonjson報錯:json.decoder.JSONDecodeError: Invalid control character at: line 2 column 18 (char 19)

一、json.loads(json_data) 報錯json.decoder.JSONDecodeError: Invalid control character at: line 2 column 18 (char 19)  原因:json預設使用的是嚴謹格式,當跨語言傳遞資料時,就容易報

python基礎 —— json處理

json.dumps()和json.loads() json格式處理函式 json.dumps() 將一個python資料型別列表進行json格式編碼,字典=》字串(json) json.loads() 將json格式資料轉換為字典 json.dump()和json.

Pythonjson.dumps()和json.dump()區別

Python內建的json 模組提供了一種非常完善的Python物件到JSON格式的轉換。 其中 json.dumps() 和 json.loads() , 要比其他序列化函式庫如pickle的

pythonjson序列化的東東

之所以寫這個因為自己總是弄混了,容易弄錯,記下來有事沒事看看 序列化是指把變數從記憶體中變成可儲存或傳輸的過程稱之為序列化用(使用dump或者dumps),把變數內容從序列化的物件重新讀到 記憶體裡稱之為反序列化(使用load或者loads) 如果我們要在不同的程式語言之間傳遞物件,就必須把物件序列化為標

python字串處理

日常程式碼中經常要對字串做各種各樣的處理,python也有很多字串處理方法 #首字母大寫使用capitalizs = 'im OK's1 = s.capitalize() #全字母大寫使用upper s2 = s.upper() #全字母小寫 s3 = s.lower() #大小寫翻轉 s4 =

python JSON 的資料解析

JSON 是一種輕量級的資料交換格式 其中有兩個函式 json.dumps(): 對資料進行編碼。 json.loads(): 對資料進行解碼。 其中需要注意轉換後的資料型別是什麼(這個由於有點過多需要自己去查詢) 下面是實列的運用 對資料解碼 import

pythonjson模組使用

通過Python的json模組,可以將字串形式的json資料轉化為字典,也可以將Python中的字典資料轉化為字串形式的json資料。 1、json字串轉為字典 json.load / json.loads 兩個方法功能類似,可選引數也相同,最大的區別在於,json.l