1. 程式人生 > >Python 3 操作json 檔案

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)_使用pythonJson進行操作

封裝 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、【PythonPython 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.‘