Python 3 操作json 檔案
背景
json 是一種輕量級的資料交換格式。易於人閱讀和編寫,同時也易於機器解析和生成。
一般表現形式是一個無序的 鍵值對 的集合。
資料:
python操作json的其他方式:
編碼(dump)
1. 將字串轉化為json串(dumps)
import json a="\"foo\bar" result=json.dumps(a) print(result) print(type(result))
執行結果:
"\"foo\bar" <class 'str'>
2. 將列表轉化為json串(dumps)
import json a=['foo', {'bar': ('baz', None, 1.0, 2)}] result=json.dumps(a) print(result) print(type(result))
執行結果:
["foo", {"bar": ["baz", null, 1.0, 2]}] <class 'str'>
3. 將字典轉化為json串(dumps)
import json a={"c": 0, "b": 0, "a": 0} result=json.dumps(a) print(result) print(type(result))
執行結果:
{"c": 0, "b": 0, "a": 0} <class 'str'>
4. 轉化字典為json串時,進行排序(dumps)
import json a={"c": 0, "b": 0, "a": 0} result=json.dumps(a, sort_keys=True) print(result)
執行結果:
{"a": 0, "b": 0, "c": 0}
對照上一個例子,可以看到json串按照字典的key進行了排序。
5. 定義json串縮排(dumps)
import json a=[1,2,3,{'4': 5, '6': 7}] result=json.dumps(a, indent=4) print(result)
執行結果:
[ 1, 2, 3, { "6": 7, "4": 5 } ]
可以看到json串輸出時採用了定義的4個空格進行縮排。
6. 將產生的json串輸出到檔案流(dump)
import json myfile=open('a.txt','w') a=[1,2,3,{'4': 5, '6': 7}] json.dump(a,myfile, indent=4) myfile.close()
執行之後,開啟 a.txt 檔案進行檢視:
[ 1, 2, 3, { "6": 7, "4": 5 } ]
解碼(load)
1. 將json串解碼為列表(loads)
import json json_str='["foo", {"bar":["baz", null, 1.0, 2]}]' result=json.loads(json_str) print(result) print(type(result))
執行結果:
['foo', {'bar': ['baz', None, 1.0, 2]}] <class 'list'>
可以看到,這裡講json串解碼為一個list。
2. 將json串解碼為字典(loads)
import json json_str='{"a": 0, "b": 0, "c": 0}' result=json.loads(json_str) print(result) print(type(result))
執行結果:
{'a': 0, 'c': 0, 'b': 0} <class 'dict'>
3. 從檔案流解碼json串(load)
以上面dump生成的a.txt為例。
import json myfile=open("a.txt",'r') # json_str='{"a": 0, "b": 0, "c": 0}' result=json.load(myfile) print(result) print(type(result)) myfile.close()
執行結果:
[1, 2, 3, {'6': 7, '4': 5}] <class 'list'>
可以看到成功將a.txt的內容解碼為list。
其他
1. dumps 和 dump 的區別
下面是兩個函式的定義:
dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None,default=None, sort_keys=False, **kw)
dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None,default=None, sort_keys=False, **kw)
可以看到,dump比 dumps多了一個引數 fp。
dumps 會直接將生成的 json串 返回,也就是可以採取 json_str=dumps()的方式來獲取結果。
但是 dump 沒有返回值,它會將生成的 json串 輸出到 fp 流中。
2. loads 和 load 的區別
下面是兩個函式的定義:
load(fp, cls=None, object_hook=None, parse_float=None,parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
loads(s, encoding=None, cls=None, object_hook=None, parse_float=None,parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
可以看到 load 的前兩個引數是 fp 以及 cls,而 loads 的前兩個引數是 s 和 encoding。
loads 會將 json串直接進行解碼輸出。
load 是從 fp 檔案流中讀取json串,然後進行解碼輸出。本質load函式定義的時候還是呼叫的 load函式。
3. 抓取請求,並解析json內容
這裡採用的是python 的 requests 庫進行抓取。
import json import requests r=requests.get('http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_key=%E9%93%B6%E9%AD%82&bk_length=600') print(type(r.text)) json_str=r.text result=json.loads(json_str) print(result) print(type(result)) if result['id']==26096: print("success") else: print("fail")
執行結果如下:
<class 'str'> {'imageWidth': 512, 'totalUrl': 'http://baike.baidu.com/view/26096.htm', 'card': [{'name': '中文名', 'format': ['銀魂'], 'key': 'm21_bookname', 'value': ['銀魂']}], 'key': '銀魂', 'id': 26096, 'isSummaryPic': 'y', 'hasOther': 1, ……<class 'dict'> success
這裡首先採用request.get 抓取json網頁,然後對 r.text 網頁內容進行解析。如果網頁內容 id 值為 26096的話,這裡就列印success。
備註:當然,這裡也可以直接使用 r.json()進行json解析。
相關推薦
Python 3 操作json 檔案
背景 json 是一種輕量級的資料交換格式。易於人閱讀和編寫,同時也易於機器解析和生成。 一般表現形式是一個無序的 鍵值對 的集合。 資料: python操作json的其他方式: 編碼(dump) 1. 將字串轉化為json串(dumps) import json a="\"foo\bar" resu
Python基礎-操作json檔案
#!usr/bin/env python #-*- coding:utf-8 -*- """ @author:yecao @file: jsontests.py @time: 2019/01/03 """ import json with open("test.json",'r') as loa
詳解python 3下文字檔案的編解碼
很多次遇到python 3下的檔案編碼,解碼問題,我這裡的平臺是mac,下面吐血搞一波。。 1. ASCII編碼: 字串是一種資料型別,但是,字串比較特殊的是還有一個編碼問題。因為計算機只能處理數字,如果要處理文字,就必須先把文字轉換為數字才能處理。最早的計算機在設計時採用8個位
Python elasticsearch 匯入json檔案資料 + 將scrapy爬蟲資料直接存入elasticsearch
1、json檔案資料存入elasticsearch json檔案是從網上爬下來的資料 scrapy 儲存的json格式資料預設Unicode格式編碼,轉utf-8 格式需要在settings裡面加入一條: FEED_EXPORT_ENCODING
python指令碼分析json檔案
少年,想偷懶?那就複製吧:https://github.com/singgel/pythonDemo 1. 概述 JSON (JavaScript Object Notation)是一種使用廣泛的輕量資料格式. Python標準庫中的json模組提供了JSON資料的處理功能. Pyt
python讀寫json檔案[未測試]
建立json檔案: { "fontFamily": "微軟雅黑", "fontSize": 12, "BaseSettings":{
node.js操作json檔案用es6的find方法報錯students.find is not function分享
報錯截圖如上 程式碼是node.js用fs操作json檔案,程式碼沒錯,但是一直報錯。。。 後來找了很久之後發現之前測試刪除功能時,把json檔案的students陣列刪了只剩一條資料了,json檔案把本來應該是陣列格式的資料,如下 : 結果是變成了這樣。。。。
python讀寫json檔案
JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。它基於ECMAScript的一個子集。 JSON採用完全獨立於語言的文字格式,但是也使用了類似於C語言家族的習慣(包括C、C++、Java、JavaScript、Perl、P
Python如何追加JSON檔案裡的內容?
import json readed = json.load(open('jsonsource.dat', 'r')) json.dump(readed, open('newjsonfile.dat', 'w'))
【Python】向json檔案中追加新的物件
def get_json(path, write_path): file = open(path, encoding=‘utf8’, errors=‘ignore’) file_lines = file.read() file.close() file_json
rood-Python 3讀取.CSV檔案遇到的編碼問題
今天算是我第一次進行Python 靜心的學習過程了。 拿到隧道的資料 拷貝一下 我擦30多G 很是happy 看來可以在 故障檢測上面的 有點進展了。 進入正題: 首先想要讀取.CSV 檔案,看到pandas模組有直接讀取的操作read_csv()函式。
Python讀寫json檔案的簡單實現
轉自:指令碼之家 介紹 JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。它基於ECMAScript的一個子集。 JSON採用完全獨立於語言的文字格式,但是也使用了類似於C語言家族的習慣(包括C、C++、Jav
【Python】往json檔案中追加內容
往json檔案中追加內容 已存在的json檔案內容如下: 需求:想要追加json內容(例如:{'e':'5555','f':'6666'}),追加後如下: 若直
python 3.5 對檔案格式進行轉換
思路如下: 對任意檔案,使用Unicode碼進行解碼,然後再由Unicode轉換為任意編碼 可參考 http://blog.sina.com.cn/s/blog_6d7cf9e50102vo90.html 程式碼如下 # -*- coding: utf-8 -*- "
Python 3.x (2) :檔案,目錄和路徑
import osimport shutilimport datetime''' 作用:將目錄備份到其他路徑。實際效果:假設給定目錄"/media/data/programmer/project/python" ,備份路徑"/home/diegoyun/backup/“ ,則會將python目錄備份到備
接口自動化測試Python(3)_使用python對Json進行操作
封裝 family name com src 技術分享 init with elf 如何使用Python對excel進行簡單的操作,這個對接口自動化測試很重要 一. 準備一份Json文檔,如下格式: { "register":{"mobile":"15500000090"}
python 3 之檔案操作
檔案操作 1.檔案處理的流程 1)開啟檔案,得到檔案控制代碼並賦值給一個變數 2)通過控制代碼對檔案進行操作 3)關閉檔案 能呼叫方法的一定是物件
python操作txt檔案中資料教程[3]-python讀取資料夾中所有txt檔案並將資料轉為csv檔案
python操作txt檔案中資料教程[3]-python讀取資料夾中所有txt檔案並將資料轉為csv檔案 覺得有用的話,歡迎一起討論相互學習~Follow Me 參考文獻 python操作txt檔案中資料教程[1]-使用python讀寫txt檔案 python操作txt檔案中資料教程[2]-pyth
4、【Python】Python 3入門(模組/面向物件/錯誤和異常/檔案操作/序列化/命名規範)
一、模組 編寫模組有很多種方法,其中最簡單的一種便是建立一個包含函式與變數、以 .py 為字尾的檔案。 另一種方法是使用撰寫 Python 直譯器本身的本地語言來編寫模組。舉例來說,你可以使用 C 語言來撰寫 Python 模組,並且在編譯後,你可以通過標準 Pyth
[Python 3系列]字符串操作
字符串一、處理字符串特殊符號▎如何在字符串內使用特殊符號?>>> text1=‘His cat‘s name is Tom.‘ File "<stdin>", line 1 text1=‘His cat‘s name is Tom.‘