跳至主要內容
2.5 Python 庫
一個月前已更新

本節要點

  • 瞭解pip的概念、用法

  • 掌握Python中模塊(Module)的概念,以及如何引入模塊/標準庫/第三方庫

  • 重點掌握Python中JSON庫與Requests庫

課前準備

安裝Requests庫

在命令行下透過pip安裝:

pip install requests 

出現Successfully insatlled requests-xxxx即表示安裝成功!

課程內容

pip 與 Python庫

1. pip是什麼

pip是一個以Python電腦程式語言寫成的軟體包管理系統,提供了對 Python 包的查找、下載、安裝、卸載的功能。

2. 模塊的概念

前面我們提到了在Python中定義變數和函數,如果你從 Python 解釋器退出再進入,那麼你定義的所有的方法和變數就都消失了。

為此 Python 提供了一個辦法,把這些定義存放在文件中,為一些腳本或者交互式的解釋器實例使用,這個文件被稱為模塊。

定義模塊:

#!/usr/bin/python3 # Filename: support.py   def print_func( par ):     print ("Hello : ", par)     return 

調用模塊:

#!/usr/bin/python3 # Filename: test.py   # 导入模块 import support   # 现在可以调用模块里包含的函数了 support.print_func("Runoob") 

3. 包的概念

包是一種管理 Python 模塊命名空間的形式,採用"點模塊名稱"; 比如一個模塊的名稱是 A.B, 那麼他表示一個包 A中的子模塊 B 。

4. Python豐富的庫

除了內建的模塊外,Python還有大量的第三方模塊。

基本上,所有的第三方模塊都會在PyPI - the Python Package Index上註冊,只要找到對應的模塊名字,即可用pip安裝。

庫名

介紹

Math

Math模塊提供了許多對浮點數的數學運算函數;

NumPy

NumPy引入了支援大型多維陣列和矩陣的函數,同時還引入了高級數學函數來處理這些陣列和矩陣;

Matplotlib

Matplotlib是Python中最流行的資料可視化庫。允許生成和建立各種各樣的圖;

Pandas

Pandas主要用於資料操作和資料分析;

Scrapy

Scrapy是另一個可有效用於網頁抓取的Python庫。它是一個開源的協作框架,用於從網站中提取所需資料。使用起來快捷簡單。

5. 如何匯入庫

使用import就可以匯入一個庫,然後使用庫中的函數。

import math import numpy as np from numpy import * 

Json庫

JavaScript對象表示法是一種流行的方式將資料格式化,成為人可讀的字串。JSON是JavaScript變成編寫資料結構的原生方式,不需要了解JavaScript,也能處理JSON格式的資料

下面是JOSN格式資料的一個例子:

{"name":"Zophie","isCat":true,"miceCaught":0,"napsTaken":37.5,"felineIQ":null} 

1. 匯入json庫

匯入json模塊後,就可以調用相關函數,JSON字串總是用雙引號

import json 

Python 原始類型向 JSON 類型的轉化對照表:

Python

JSON

dict

object

list, tuple

array

str, unicode

string

int, long, float

number

True

true

False

false

None

null

2. JSON格式轉換

  • json.loads

要將包含JSON資料的字串轉換為Python的值,就將它傳遞給json.loads()函數

import json a='{"name":"Zophie","isCat":true,"miceCaught":0,"napsTaken":37.5,"felineIQ":null}' b=json.loads(a) print(b) 
  • json.dumps()

將一個Python值轉換成JSON格式的資料字串,該值只能是以下基本Python資料類型之一:字典、列表、整型、浮點型、字串、布爾型或None

import json a={'name': 'Zophie', 'isCat': True, 'miceCaught': 0, 'napsTaken': 37.5, 'felineIQ': None} b=json.dumps(a) print(b) 

3. JSON與字典的差別

從形式上看,都是“Key:Value”的形式。但是從本質上講,字典是一種資料結構,而json是一種格式;字典有很多內置函數,有多種調用方法,而json是資料打包的一種格式,並不像字典具備操作性,並且是格式就會有一些形式上的限制,比如json的格式要求必須且只能使用雙引號作為key或者值的邊界符號,不能使用單引號,而且“key”必須使用邊界符(雙引號),但字典就無所謂了。

requests庫

Requests文件地址:點我查看

1. 匯入Requests庫

import requests 

2. Requests的具體構成

requests.request(method, url, ``*``*``kwargs)  

3. 使用Requests

要透過GET造訪一個頁面,只需要幾行程式碼:

>>> import requests >>> r = requests.get('https://www.baidu.com/') # 百度 >>> r.status_code 200 >>> r.text r.text 

4. 注意請求格式

API最常見的請求格式有 json/application 及 x-www-form-urlencoded,我們已經在第一節課講了其區別,在實際調用API過程中,我們要根據API的請求格式,對參數進行處理!

  • API請求格式為 application/json

import requests import urllib.parse import json  url = "https://nvoiceocr.market.alicloudapi.com/taxinvoice"  payload = {"image":"http://www.xxxx.com/xxxx.png"}  headers = {   'Authorization': 'APPCODE xxxxxxxxxxxxxxx',   'Content-Type': 'application/json' }  response = requests.request("POST", url, headers=headers, data = json.dumps(payload))  json.loads(response.text) 
  • API請求格式為 x-www-form-urlencoded

urlencode 即url編碼,把資料轉換為類似url傳參的格式

urlencode前

{"image":"http://www.xxxx.com/xxxx.png"} 

urlencode後

'image=http%3A%2F%2Fwww.xxxx.com%2Fxxxx.png' 
import requests import urllib.parse import json  url = "https://nvoiceocr.market.alicloudapi.com/taxinvoice"  payload = {"image":"http://www.xxxx.com/xxxx.png"}  headers = {   'Authorization': 'APPCODE xxxxxxxxxxxxxxx',   'Content-Type': 'application/x-www-form-urlencoded' }  response = requests.request("POST", url, headers=headers, data = urllib.parse.urlencode(payload))  json.loads(response.text) 

是否回答了您的問題?