真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python中編碼函數(shù),python基礎(chǔ)編碼

【Python】淺談python中的json

一 前言 ?

創(chuàng)新互聯(lián)成立于2013年,先為義縣等服務(wù)建站,義縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為義縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

最近一直在做開發(fā)相關(guān)的工作--基于Django的web 平臺(tái),其中需要從model層傳輸數(shù)據(jù)到view 層做數(shù)據(jù)展示或者做業(yè)務(wù)邏輯處理。我們采用通用的Json格式--Json(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,易于閱讀和程序解析。

二 認(rèn)識(shí)Json

2.1 Json 結(jié)構(gòu)

常見的Json格式為 “名稱/值”對(duì)的集合,其中 值可以是對(duì)象,列表,字典,字符串等等。比如

backup_data?=?{"back_to_host":?"dbbk0",

"ip_address":?"10.10.20.3",

"host_name":?"rac4",

"port":?3306}

2.2 使用Json

Python的Json模塊序列化與反序列化的過(guò)程分別是 編碼和解碼。這兩個(gè)過(guò)程涉及到兩組不同的函數(shù)

編碼 把一個(gè)Python對(duì)象編碼轉(zhuǎn)換成Json字符串,json.dumps(data)/json.dump(data,file_handler)

解碼 把Json格式字符串解碼轉(zhuǎn)換成Python對(duì)象,json.loads(data)/json.load(file_handler)

在python中要使用Json模塊做相關(guān)操作,必須先導(dǎo)入:

import Json

2.3 主要函數(shù)

編碼函數(shù)主要有 json.dumps(data)/json.dump(data,file_handler)

json.dumps()的參數(shù)是將python對(duì)象轉(zhuǎn)換為字符串,如使用json.dumps序列化的對(duì)象json_dumps=json.dumps({'a':1, 'b':2}) ,json_dumps='{"b": 2, "a": 1}'

json.dump 是將內(nèi)置類型序列化為json對(duì)象后寫入文件。

解碼函數(shù)主要由json.loads(data)/json.load(file_handler) ?

json.loads的參數(shù)是內(nèi)存對(duì)象,把Json格式字符串解碼轉(zhuǎn)換成Python對(duì)象,json_loads=json.loads(d_json) ?#{ b": 2, "a": 1},使用load重新反序列化為dict

json.load()的參數(shù)針對(duì)文件句柄,比如本地有一個(gè)文件/tmp/test.json ?json_load=json.load(open('/tmp/test.json'))

具體案例參考如下:

In?[3]:?data={"back_to_host":?"rac1",

...:?"ip_address":?"10.215.20.3",

...:?"host_name":?"rac3",

...:?"port":?3306}

In?[7]:?json_str=json.dumps(data)

In?[8]:?print json_str

{"ip_address":?"10.215.20.3",?"back_to_host":?"rac1",?"host_name":?"rac3",?"port":?3306}

In?[9]:?json_loads=json.load(json_str)

---------------------------------------------------------------------------

AttributeError Traceback?(most recent?call?last)

ipython-input-9-180506f16431?in?module()

----?1 json_loads=json.load(json_str)

/System/Library/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)

284

285?""

注意 從上面的報(bào)錯(cuò)信息來(lái)看 json.loads 傳參是字符串類型,并不是文件句柄,沒(méi)有 read()屬性。

In?[10]:?json_loads=json.loads(json_str)

In?[11]:?print json_loads

{u'back_to_host':?u'rac1',?u'ip_address':?u'10.215.20.3',?u'host_name':?u'rac3',?u'port':?3306}

In?[12]:?type(json_loads)

Out[12]:?dict

In?[13]:?type(json_str)

Out[13]:?str

利用dump 將數(shù)據(jù)寫入 dump.json

In?[17]:?with open('/tmp/dump.json','w')?as f:

...:?json.dump(json_str,f)

...:

yangyiDBA:~?yangyi$ cat /tmp/dump.json

"{\"ip_address\": \"10.10.20.3\", \"back_to_host\": \"rac1\", \"host_name\": \"rac3\", \"port\": 3306}"

yangyiDBA:~?yangyi$

利用json.load 將dump.sjon的數(shù)據(jù)讀出來(lái)并賦值給 data?

In?[18]:?with open('/tmp/dump.json','r')?as f:

...:?data=json.load(f)

...:

In?[19]:?print data

{"ip_address":?"10.10.20.3",?"back_to_host":?"rac1",?"host_name":?"rac3",?"port":?3306}

三 小結(jié)

本文算是一篇學(xué)習(xí)筆記,主要對(duì)比了json.loads/json.load ?, json.dumps/ json.dump 的使用差異 ,方便以后更好的使用json 。

以上為本次分享內(nèi)容,感謝觀看。

Python基本編碼格式

1、一般來(lái)說(shuō),聲明編碼格式在腳本中是必需的。2、如果Python源碼文件沒(méi)有聲明編碼格式,Python解釋器會(huì)默認(rèn)使用ASCII編碼。但出現(xiàn)非ASCII編碼的字符,Python解釋器就會(huì)報(bào)錯(cuò)。

1、Python 采用代碼縮進(jìn)和冒號(hào)( : )來(lái)區(qū)分代碼塊之間的層次。2、在 Python 中,對(duì)于類定義、函數(shù)定義、流程控制語(yǔ)句、異常處理語(yǔ)句等,行尾的冒號(hào)和下一行的縮進(jìn),表示下一個(gè)代碼塊的開始,而縮進(jìn)的結(jié)束則表示此代碼塊的結(jié)束。3、Python 中實(shí)現(xiàn)對(duì)代碼的縮進(jìn),可以使用空格或者 Tab 鍵實(shí)現(xiàn)。但無(wú)論是手動(dòng)敲空格,還是使用 Tab 鍵,通常情況下都是采用 4 個(gè)空格長(zhǎng)度作為一個(gè)縮進(jìn)量(默認(rèn)情況下,一個(gè) Tab 鍵就表示 4 個(gè)空格)。4、對(duì)于 Python 縮進(jìn)規(guī)則,初學(xué)者可以這樣理解,Python 要求屬于同一作用域中的各行代碼,它們的縮進(jìn)量必須一致,但具體縮進(jìn)量為多少,并不做硬性規(guī)定。

正確示例代碼:

錯(cuò)誤示例代碼:

Python中使用 # 進(jìn)行注釋,我們?cè)谑褂? 的時(shí)候,# 號(hào)后面要空一格在行內(nèi)注釋的時(shí)候,中間應(yīng)該至少加兩個(gè)空格

print("你好,世界") # 注釋

** 使用的一般性原則:**

1、在二元運(yùn)算符兩邊各空一格,算術(shù)操作符兩邊的空格可靈活使用,但兩側(cè)務(wù)必要保持一致2、不要在逗號(hào)、分號(hào)、冒號(hào)前面加空格,但應(yīng)該在它們后面加(除非在行尾)3、函數(shù)的參數(shù)列表中,逗號(hào)之后要有空格4、函數(shù)的參數(shù)列表中,默認(rèn)值等號(hào)兩邊不要添加空格5、左括號(hào)之后,右括號(hào)之前不要加添加空格6、參數(shù)列表, 索引或切片的左括號(hào)前不應(yīng)加空格

使用的一般性原則:

1、編碼格式聲明、模塊導(dǎo)入、常量和全局變量聲明、頂級(jí)定義和執(zhí)行代碼之間空兩行2、頂級(jí)定義之間空兩行,方法定義之間空一行3、在函數(shù)或方法內(nèi)部,可以在必要的地方空一行以增強(qiáng)節(jié)奏感,但應(yīng)避免連續(xù)空行

1、導(dǎo)入總應(yīng)該放在文件頂部,位于模塊注釋和文檔字符串之后,模塊全局變量和常量之前。

2、導(dǎo)入應(yīng)該按照從最通用到最不通用的順序分組,分組之間空一行:

3、每個(gè) import 語(yǔ)句只導(dǎo)入一個(gè)模塊,盡量避免一次導(dǎo)入多個(gè)模塊

命名規(guī)范這一塊的大家應(yīng)該都比較熟悉了,但是不同的編程語(yǔ)言之間的明明規(guī)范也是有所區(qū)別的~

Python命名建議遵循的一般性原則:

引號(hào)使用的一般性原則:

Python跟其他幾個(gè)主流編程語(yǔ)言的分號(hào)使用區(qū)別很大Python的代碼末尾不需要加分號(hào),而Java和C#等都需要添加

不要在行尾添加分號(hào),也不要用分號(hào)將兩條命令放在同一行,例如:

Python學(xué)習(xí)日記

python中怎么求ascii碼7、8、9的編碼

度知道 提問(wèn)

搜一搜

python中怎么求ascii碼7、8、9的編碼

社會(huì)我飛哥16888

今天 01:21 超過(guò)161用戶采納過(guò)TA的回答

關(guān)注

我們可以使用for循環(huán)和ord()函數(shù)來(lái)獲取字符串的 ASCII 值。ord()函數(shù)返回傳遞字符串的 Unicode。它接受1作為字符串的長(zhǎng)度。for循環(huán)用于迭代序列:列表、元組、字典、集合或字符串。因此,我們可以使用for循環(huán)來(lái)解析字符串的每個(gè)字符并將其轉(zhuǎn)換為 ASCII 值。

在下面的代碼中,text 是一個(gè)保存用戶輸入的變量。ascii_values 最初是一個(gè)空列表,稍后將保存字符串中每個(gè)字符的 ASCII 值。一旦循環(huán)完成其循環(huán),我們將向用戶顯示 ascii_values 的內(nèi)容作為輸出。append() 函數(shù)在每次迭代后向列表 ascii_values 添加一個(gè)新項(xiàng)目。

當(dāng)我們運(yùn)行這個(gè)程序時(shí),用戶會(huì)收到一個(gè)字符串提示,一旦用戶提供了一個(gè)字符串,它就會(huì)被存儲(chǔ)在一個(gè)變量 text 中。在示例中,輸入是字符串 hello。打印字符串中每個(gè)字符的 ASCII 值。

示例代碼:

#python 3.x

text = input("enter a string to convert into ascii values:")

ascii_values = []

for character in text:

ascii_values.append(ord(character))

print(ascii_values)

輸出:

enter a string to convert into ASCII values: hello

[104, 101, 108, 108, 111]

二、在 Python 中使用 List Comprehension 和 ord() 函數(shù)獲取字符串的 ASCII

我們可以使用列表推導(dǎo)來(lái)實(shí)現(xiàn)相同的結(jié)果。Python 中的列表推導(dǎo)式是一種簡(jiǎn)單而緊湊的語(yǔ)法,用于從字符串或其他列表創(chuàng)建列表。這是一種通過(guò)對(duì)現(xiàn)有列表中的每個(gè)項(xiàng)目進(jìn)行操作來(lái)創(chuàng)建新列表的簡(jiǎn)潔方法。列表推導(dǎo)比使用 for 循環(huán)處理列表快得多。

在下面的代碼中,外部沒(méi)有 for 或 while 循環(huán)。但是在列表推導(dǎo)中,我們使用 for 循環(huán)來(lái)獲取 text 的每個(gè) character。

示例代碼:

#python 3.x

text = input("enter a string to convert into ascii values: ")

ascii_values = [ord(character) for character in text]

print(ascii_values)

輸出:

enter a string to convert into ASCII values: hello

[104, 101, 108, 108, 111]

三、使用用戶定義的函數(shù) to_ascii() 在 Python 中獲取字符串的 ASCII

另一種編寫代碼以實(shí)現(xiàn)相同目標(biāo)的方法是使用用戶定義的函數(shù)。用戶定義函數(shù)是用于在策略正文中組織代碼的函數(shù)。一旦你定義了一個(gè)函數(shù),你就可以像內(nèi)置的動(dòng)作和解析器函數(shù)一樣調(diào)用它。傳遞給函數(shù)的變量是通過(guò)引用而不是通過(guò)值傳遞的。

在下面的代碼中,我們使用用戶定義的函數(shù) to_ascii 將 text 作為參數(shù)。在函數(shù)內(nèi)部,定義了塊操作,并通過(guò)關(guān)鍵字 return 傳遞結(jié)果。當(dāng)從提供 text 的主模塊調(diào)用函數(shù) to_ascii 作為參數(shù)控制轉(zhuǎn)移到 to_ascii 函數(shù)并執(zhí)行代碼塊時(shí),我們會(huì)在列表中獲得給定字符串的 ASCII 值。

示例代碼:

#python 3.x

def to_ascii(text):

ascii_values = [ord(character) for character in text]

return ascii_values

text = input("Enter a string: ")

print(to_ascii(text))

輸出:

Enter a string:

hello

[104, 101, 108, 108, 111]


當(dāng)前標(biāo)題:python中編碼函數(shù),python基礎(chǔ)編碼
URL網(wǎng)址:http://weahome.cn/article/hdscic.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部