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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

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

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

python 自稱(chēng) "Batteries included"(自帶電池, 自備干糧?), 就是因?yàn)樗峁┝撕芏鄡?nèi)置的模塊, 使用這些模塊無(wú)需安裝和配置即可使用.

本章主要介紹 python 的一些內(nèi)置常用核心模塊

Python 常用的核心模塊

三、json模塊

json模塊用于使用JSON序列化和反序列化對(duì)象.

JSON是JavaScript Object Notation的簡(jiǎn)寫(xiě), 也叫 JavaScript 對(duì)象符號(hào).

3.1 json語(yǔ)法格式

JSON 是一種輕量級(jí)的數(shù)據(jù)交換格式, 起源于JavaScript 的對(duì)象字面量形式, 但是嚴(yán)格上來(lái)說(shuō) JSON 并不能看成是JavaScript 對(duì)象的子集.

JSON 中主要有兩種數(shù)據(jù)類(lèi)型:json 對(duì)象{}和 json 數(shù)組[].

json 對(duì)象

用大括號(hào){}括起來(lái), 大括號(hào)中是key:value形式的數(shù)據(jù), 不同的鍵值對(duì)用,分開(kāi).

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

下面就是一個(gè) json 對(duì)象.

{

"name": "lisi",

"age" : 20

}

注意:

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

如果是整數(shù), 則不需要使用雙引號(hào).

key一般使用字符串, value可以是任意類(lèi)型(字符串, json 數(shù)組, json 對(duì)象都可以).

json數(shù)組

使用[]括起來(lái), 存儲(chǔ)的數(shù)據(jù)可以是字符串, 數(shù)字, 和 json 對(duì)象.

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

**

下面就是一個(gè)json數(shù)組**

[

{

"name":"lisi", # name --> 用戶(hù)名

"age" : 20 # age ---> 用戶(hù)使用年限

},

{

"name" : "zs",

"age" : 30

}

]

json數(shù)組中可以存儲(chǔ)字符串類(lèi)型

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

3.2 json模塊基本使用

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

序列化是指, 把 python 對(duì)象轉(zhuǎn)變成 json 格式的數(shù)據(jù), 并保存.

反序列化是指, 把 json 格式的數(shù)據(jù)轉(zhuǎn)變成 python 對(duì)象.

json 數(shù)據(jù)類(lèi)型和 python 數(shù)據(jù)類(lèi)型對(duì)應(yīng)關(guān)系

注意:

括號(hào)中的類(lèi)型表示可以把 python 中的類(lèi)型轉(zhuǎn)換成 JSON 類(lèi)型, 但是不能從 JSON 類(lèi)型轉(zhuǎn)換成 python 類(lèi)型

JSON 類(lèi)型

python 類(lèi)型

object

dict

array

list(tuple)

string

unicode(str, bytes)

number

int, float

true

True

false

False

null

None

說(shuō)明:

對(duì)于字符串?dāng)?shù)據(jù), 應(yīng)該假設(shè)使用的是 Unicode 字符串. 如果在編碼時(shí)遇到字節(jié)字符串, 則默認(rèn)使用utf-8將其解碼為 Unicode 的字符串. 解碼是, JSON 字符串總是以 Unicode 的形式返回.

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

將obj序列化到文件對(duì)象f中.

opts表示關(guān)鍵字參數(shù)的集合(多個(gè)關(guān)鍵字參數(shù)),可以通過(guò)這些參數(shù)來(lái)控制序列化的流程, 這些關(guān)鍵字參數(shù)都是可選的.

import json

d = {

"name": "zs",

"age": 30,

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

}

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

關(guān)鍵字參數(shù)說(shuō)明

關(guān)鍵字參數(shù)

說(shuō)明

skipkeys

布爾標(biāo)志.當(dāng)字典的key不是基本類(lèi)型(str, int, float, bool, None)時(shí)的處理方式. True就跳過(guò)這個(gè)key-value, False(默認(rèn)值)就拋一個(gè)異常TypeError

ensure_ascii

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

check_circle

布爾標(biāo)志. 確定檢測(cè)容器的循環(huán)引用. 默認(rèn)值是True, 如果設(shè)置為False, 則不檢測(cè), 一旦出現(xiàn)了循環(huán)引用則會(huì)拋出異常OverflowEerror, 或者更糟

allow_nan

布爾標(biāo)志. 確定是否序列化范圍外的浮點(diǎn)數(shù).(nan, inf, -inf). 默認(rèn)值是True. 如果是False, 則當(dāng)序列化的值中有上面的值是會(huì)拋出異常ValueError

indent

一個(gè)非負(fù)整數(shù). 表示在打印數(shù)組和對(duì)象的時(shí)候的縮進(jìn)量(空格的個(gè)數(shù)). 默認(rèn)是None, 表示沒(méi)有縮進(jìn), 用最緊湊的方式顯示. 如果是0或負(fù)數(shù)或""則只換行,不縮進(jìn). 如果是個(gè)字符串, 則用這個(gè)字符串來(lái)縮進(jìn). 比如用:\t

separators

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

default

一個(gè)函數(shù). 如果某個(gè)value是 json 不支持的類(lèi)型, 則使用這個(gè)函數(shù)的返回值來(lái)替換value. python 會(huì)把那個(gè)不支持的類(lèi)型的數(shù)據(jù)作為參數(shù)傳遞到這個(gè)函數(shù)中.

sort_key

布爾值. 表示是否對(duì)字典的key進(jìn)行排序.默認(rèn)值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()類(lèi)似, 只是這個(gè)函數(shù)是把序列化后的字符串以返回值的形式返回了.

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

從文件反序列化JSON.

f文件對(duì)象.

opts表示關(guān)鍵字參數(shù)的集合(多個(gè)關(guān)鍵字參數(shù)),可以通過(guò)這些參數(shù)來(lái)控制反序列化的流程, 這些關(guān)鍵字參數(shù)都是可選的.

import json

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

obj = json.load(f)

print(obj)

關(guān)鍵字參數(shù)說(shuō)明

關(guān)鍵字參數(shù)

說(shuō)明

object_hook

一個(gè)函數(shù). 解析JSON 對(duì)象的時(shí)候調(diào)用的函數(shù). 默認(rèn)使用dict()

parse_float

一個(gè)函數(shù). 解析浮點(diǎn)數(shù)的時(shí)候使用. 默認(rèn)使用float()

parse_int

一個(gè)函數(shù). 解析整數(shù)的時(shí)候使用. 默認(rèn)使用int()

parse_constant

一個(gè)函數(shù). 解析常數(shù)的時(shí)候使用. 像-Infinity, Infinity, NaN, true, false

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

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

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。