日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python处理数据0和负数跳过_Python第十一章-常用的核心模块03-json模块

發布時間:2023/12/15 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python处理数据0和负数跳过_Python第十一章-常用的核心模块03-json模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python 自稱 "Batteries included"(自帶電池, 自備干糧?), 就是因為他提供了很多內置的模塊, 使用這些模塊無需安裝和配置即可使用.

本章主要介紹 python 的一些內置常用核心模塊

Python 常用的核心模塊

三、json模塊

json模塊用于使用JSON序列化和反序列化對象.

JSON是JavaScript Object Notation的簡寫, 也叫 JavaScript 對象符號.

3.1 json語法格式

JSON 是一種輕量級的數據交換格式, 起源于JavaScript 的對象字面量形式, 但是嚴格上來說 JSON 并不能看成是JavaScript 對象的子集.

JSON 中主要有兩種數據類型:json 對象{}和 json 數組[].

json 對象

用大括號{}括起來, 大括號中是key:value形式的數據, 不同的鍵值對用,分開.

類似于我們 python 中的字典(dict).

下面就是一個 json 對象.

{

"name": "lisi",

"age" : 20

}

注意:

鍵和值中, 如果是字符串則一定要用雙引號括起來.(單引號也可以, 但是雙引號在各個平臺和編程語言中兼容性更好)

如果是整數, 則不需要使用雙引號.

key一般使用字符串, value可以是任意類型(字符串, json 數組, json 對象都可以).

json數組

使用[]括起來, 存儲的數據可以是字符串, 數字, 和 json 對象.

類似于我們 python 中的列表(list)

**

下面就是一個json數組**

[

{

"name":"lisi", # name --> 用戶名

"age" : 20 # age ---> 用戶使用年限

},

{

"name" : "zs",

"age" : 30

}

]

json數組中可以存儲字符串類型

["a", "b", "c"]

3.2 json模塊基本使用

對 json 一般有兩種操作:序列化(編碼)和反序列化(解碼).

序列化是指, 把 python 對象轉變成 json 格式的數據, 并保存.

反序列化是指, 把 json 格式的數據轉變成 python 對象.

json 數據類型和 python 數據類型對應關系

注意:

括號中的類型表示可以把 python 中的類型轉換成 JSON 類型, 但是不能從 JSON 類型轉換成 python 類型

JSON 類型

python 類型

object

dict

array

list(tuple)

string

unicode(str, bytes)

number

int, float

true

True

false

False

null

None

說明:

對于字符串數據, 應該假設使用的是 Unicode 字符串. 如果在編碼時遇到字節字符串, 則默認使用utf-8將其解碼為 Unicode 的字符串. 解碼是, JSON 字符串總是以 Unicode 的形式返回.

序列化操作1:json.dump(obj, f, **opts)

將obj序列化到文件對象f中.

opts表示關鍵字參數的集合(多個關鍵字參數),可以通過這些參數來控制序列化的流程, 這些關鍵字參數都是可選的.

import json

d = {

"name": "zs",

"age": 30,

"girls": ["志玲", "鳳姐"]

}

json.dump(d, open("data.json", mode="w+"))

關鍵字參數說明

關鍵字參數

說明

skipkeys

布爾標志.當字典的key不是基本類型(str, int, float, bool, None)時的處理方式. True就跳過這個key-value, False(默認值)就拋一個異常TypeError

ensure_ascii

布爾標志. 如果是True(默認值), 則會把所有的非ascii字符進行轉義處理, 如果是False則會把所有字符原樣輸出.要保證你的文件支持非ascii字符

check_circle

布爾標志. 確定檢測容器的循環引用. 默認值是True, 如果設置為False, 則不檢測, 一旦出現了循環引用則會拋出異常OverflowEerror, 或者更糟

allow_nan

布爾標志. 確定是否序列化范圍外的浮點數.(nan, inf, -inf). 默認值是True. 如果是False, 則當序列化的值中有上面的值是會拋出異常ValueError

indent

一個非負整數. 表示在打印數組和對象的時候的縮進量(空格的個數). 默認是None, 表示沒有縮進, 用最緊湊的方式顯示. 如果是0或負數或""則只換行,不縮進. 如果是個字符串, 則用這個字符串來縮進. 比如用:\t

separators

一個元組.(item_separator, key_separator), item_separator是指的數組元素之間的分隔符, key_separator是指的key 與 value之間的分隔符. 默認是:(",", ":"). 永遠不要更改默認值

default

一個函數. 如果某個value是 json 不支持的類型, 則使用這個函數的返回值來替換value. python 會把那個不支持的類型的數據作為參數傳遞到這個函數中.

sort_key

布爾值. 表示是否對字典的key進行排序.默認值False

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import json

d = {

"name": "zs",

"age": 30,

"girls": ["志玲", "鳳姐"],

"a": float("1"),

"b": lambda : 2

}

json.dump(d, open("data.json", mode="w+", encoding="utf-8"),

ensure_ascii=False,

allow_nan=True,

indent=2,

separators=(",", ":"),

default=lambda a: "abc",

sort_keys=True)

print(int("1"))

序列化操作2:json.dumps(obj, **opts)

和json.dump()類似, 只是這個函數是把序列化后的字符串以返回值的形式返回了.

反序列化操作1:json.load(f, **opts)

從文件反序列化JSON.

f文件對象.

opts表示關鍵字參數的集合(多個關鍵字參數),可以通過這些參數來控制反序列化的流程, 這些關鍵字參數都是可選的.

import json

with open("data.json", mode="r+", encoding="utf-8") as f:

obj = json.load(f)

print(obj)

關鍵字參數說明

關鍵字參數

說明

object_hook

一個函數. 解析JSON 對象的時候調用的函數. 默認使用dict()

parse_float

一個函數. 解析浮點數的時候使用. 默認使用float()

parse_int

一個函數. 解析整數的時候使用. 默認使用int()

parse_constant

一個函數. 解析常數的時候使用. 像-Infinity, Infinity, NaN, true, false

反序列化操作2:json.loads(s, **opts)

與json.load(f, **opts)類似, 只是這個函數是從JSON 格式的字符串中反序列化數據.

總結

以上是生活随笔為你收集整理的python处理数据0和负数跳过_Python第十一章-常用的核心模块03-json模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。