Python實現(xiàn)Excel數(shù)據(jù)同步到飛書文檔
一、整體目標
核心功能:自動將Excel數(shù)據(jù)同步到飛書文檔的末尾,并添加時間戳。
應用場景:
- 每日銷售數(shù)據(jù)報表自動更新到團隊文檔
- 周報自動化生成
- 實時數(shù)據(jù)看板同步
二、代碼結構拆解
# 基礎設施層 import pandas as pd # 數(shù)據(jù)處理 import requests # 網(wǎng)絡請求 import logging # 錯誤追蹤 from datetime import datetime # 時間處理 # 配置層 logging配置 → API密鑰配置 # 功能層 get_access_token() → 獲取系統(tǒng)通行證 insert_to_feishu() → 內容插入邏輯 # 執(zhí)行層 main() → 流程控制器
三、核心邏輯講解(重點)
用「快遞送貨」做類比:
1. 建立安全連接(獲取access_token)
好比:快遞員需要先獲取小區(qū)門禁卡
流程:
- 準備身份證(APP_ID)和密碼(APP_SECRET)
- 到門衛(wèi)處(飛書認證接口)驗證身份
- 獲得臨時通行證(tenant_access_token)
response = requests.post(url, json=data) # 發(fā)送驗證請求 return response.json()["tenant_access_token"] # 提取通行證
2. 定位文檔位置
好比:找到要送貨的樓層和房間
兩步作:
1.獲取整棟樓結構(獲取文檔所有內容塊)
blocks = requests.get(blocks_url).json()["data"]["items"]
2.找到最后一間房(定位最后一個內容塊)
last_block_id = blocks[-1]["block_id"] # 列表末尾元素
3. 數(shù)據(jù)包裝與投遞
好比:打包貨物并送貨
包裝階段:
# 添加醒目時間標簽 時間戳 = datetime.now().strftime(...) # 將Excel轉為Markdown表格 markdown_table = df.to_markdown(index=False)
投遞作:
requests.post(insert_url, json={
"content": "**時間標簽** + 表格數(shù)據(jù)",
"position": "after" # 放在最后
})
四、異常處理機制
用「行車記錄儀」做類比:
日志配置(相當于安裝記錄儀)
logging.basicConfig(
filename='feishu_sync.log', # 記錄文件
level=logging.INFO, # 記錄級別
format='時間-級別-信息' # 記錄格式
)
關鍵節(jié)點監(jiān)控(示例):
try:
發(fā)送請求...
except Exception as e:
logging.error(f"插入失敗: {e}") # 記錄錯誤快照
五、函數(shù)講解
get_access_token()
def get_access_token():
"""獲取飛書API的access_token"""
# 定義API請求地址
url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
# 設置HTTP請求頭(告訴服務器我們發(fā)送的是JSON數(shù)據(jù))
headers = {"Content-Type": "application/json"}
"""
服務器會根據(jù) Content-Type 的值,調用對應的解析方式。例如:
如果是 application/json,服務器會用 JSON 解析器處理數(shù)據(jù)。
如果是 application/x-www-form-urlencoded,服務器會按表單格式解析數(shù)據(jù)。
"""
# 準備請求數(shù)據(jù)(飛書應用的ID和密鑰)
data = {"app_id": APP_ID, "app_secret": APP_SECRET}
try:
# 發(fā)送POST請求到飛書服務器
response = requests.post(url, headers=headers, json=data)
# 檢查響應狀態(tài)碼(如果不是200,會拋出異常)
response.raise_for_status()
# 解析返回的JSON數(shù)據(jù),提取訪問令牌
return response.json()["tenant_access_token"]
except Exception as e:
# 記錄錯誤日志
logging.error(f"獲取access_token失敗: {e}")
# 失敗時返回None
return None關鍵概念解釋
1. 飛書API訪問令牌 (tenant_access_token)
- 這是飛書API的“通行證”,調用其他API(如發(fā)送消息、讀取數(shù)據(jù))時必須攜帶它。
- 令牌有效期通常為2小時,需要定期重新獲取。
2. HTTP請求
- POST:一種HTTP方法,表示向服務器提交數(shù)據(jù)(這里是提交和)。app_idapp_secret
- headers:請求頭, 表示發(fā)送的數(shù)據(jù)是JSON格式。Content-Type: application/json
- data:實際發(fā)送的數(shù)據(jù),包含飛書應用的憑證。
3. APP_ID 和 APP_SECRET
- 這兩個值需要從飛書開放平臺注冊應用后獲取。
- 非常重要! 相當于你的應用賬號密碼,需嚴格保密
4. 異常處理 (try-except)
try:
response = requests.post(url, headers=headers, json=data)
response.raise_for_status()
return response.json()["tenant_access_token"]
except Exception as e:
logging.error(f"獲取access_token失敗: {e}")
return None
1. response = requests.post(url, headers=headers, json=data)
作用:向指定的 url 發(fā)送一個 HTTP POST 請求。
參數(shù)說明:
url: 目標 API 接口地址(例如飛書的 tenant_access_token 獲取接口)。
headers: 請求頭,通常包含 Content-Type 等信息(如之前設置的 application/json)。
json=data: 自動將 data 對象(字典)序列化為 JSON 字符串,并設置 Content-Type: application/json。
關鍵點:
使用 json=data 比手動轉換數(shù)據(jù)更簡潔(等價于 data=json.dumps(data) + 設置請求頭)。
2. response.raise_for_status()
作用:檢查 HTTP 響應狀態(tài)碼,如果狀態(tài)碼表示錯誤(如 4xx 客戶端錯誤、5xx 服務器錯誤),直接拋出異常。
常見狀態(tài)碼:
- 200 OK: 請求成功。
- 400 Bad Request: 請求參數(shù)錯誤。
- 401 Unauthorized: 身份驗證失敗。
- 500 Internal Server Error: 服務器內部錯誤。
意義:
如果服務器返回錯誤狀態(tài)碼(如飛書接口返回 {"code": 9999, "msg": "invalid params"}),此方法會拋出 HTTPError 異常,阻止后續(xù)代碼執(zhí)行,避免處理錯誤數(shù)據(jù)。
3. return response.json()["tenant_access_token"]
作用:
response.json(): 將 HTTP 響應內容解析為 Python 字典(前提是響應內容是 JSON 格式)。
["tenant_access_token"]: 從解析后的字典中提取 tenant_access_token 字段的值并返回。
關鍵點:
假設飛書接口返回的 JSON 結構為 {"code":0, "tenant_access_token":"xxx", "expire":7200}。
如果響應不是合法的 JSON,response.json() 會拋出 JSONDecodeError。
4.except Exception as e:
作用:捕獲所有類型的異常(包括 HTTPError、JSONDecodeError、網(wǎng)絡超時等)。
細節(jié):
logging.error(...): 記錄錯誤日志(比 print 更規(guī)范,可輸出到文件或監(jiān)控系統(tǒng))。
return None: 返回 None 表示獲取 access_token 失敗,調用方可通過判斷返回值是否為 None 處理錯誤。
完整邏輯流程圖
開始
│
├─ 發(fā)送 POST 請求 → 成功?
│ ├─ 是 → 檢查狀態(tài)碼 → 正常?
│ │ ├─ 是 → 解析 JSON → 返回 tenant_access_token
│ │ └─ 否 → 拋出 HTTPError
│ └─ 否 → 拋出異常(如網(wǎng)絡錯誤)
│
└─ 捕獲異常 → 記錄日志 → 返回 None
insert_to_feishu()
1.獲取訪問令牌
access_token = get_access_token()
調用 get_access_token() 函數(shù)獲取飛書API的訪問令牌(需提前實現(xiàn))。
若獲取失?。ㄈ缯J證錯誤),直接返回 False。
2.獲取文檔塊列表
blocks_url = f"https://open.feishu.cn/open-apis/docx/v1/documents/{DOCUMENT_ID}/blocks"
headers = {"Authorization": f"Bearer {access_token}"}
blocks_response = requests.get(blocks_url, headers=headers)
通過飛書API獲取文檔的塊(Block)結構。塊是文檔內容的組成單元(如段落、標題、表格等)。
DOCUMENT_ID 是目標文檔的唯一標識,需提前從飛書后臺獲取。
headers = {"Authorization": f"Bearer {access_token}"}
這行代碼用于構造一個 HTTP 請求頭(Request Headers),目的是向飛書API服務端證明當前請求的合法性。
認證機制
Bearer Token:這是現(xiàn)代API認證的常見方式,屬于OAuth 2.0協(xié)議的一部分。
功能:通過將 access_token(訪問令牌)放在請求頭中,告知飛書服務器“持有此令牌的用戶/應用有權訪問該API”。
類比:類似于現(xiàn)實中的“門禁卡”,只有持有有效卡(access_token)的人才能通過門禁(API權限校驗)。
格式說明
鍵值對結構:
鍵(Key): Authorization
值(Value): Bearer {access_token}
(將 access_token 的值替換到 {access_token} 的位置)
示例:
# 假設 access_token = "abc123xyz"
headers = {"Authorization": "Bearer abc123xyz"}
技術細節(jié)
為什么必須用 Bearer 前綴?
這是OAuth 2.0的標準規(guī)范,用于明確令牌類型。服務端會根據(jù)前綴判斷認證方式。
access_token 從何而來?
通常通過飛書開放平臺的身份認證流程生成,例如:
- 用戶登錄后授權獲取
- 應用自身體驗的令牌(如機器人或服務端API調用
實際應用場景
在飛書API請求中,所有需要權限的操作(如讀寫文檔、獲取用戶信息等)都必須攜帶此頭。例如:
# 發(fā)送請求時附加 headers response = requests.get(url, headers=headers)
3.飛書文檔中獲取所有內容塊
這三行代碼用于 從飛書文檔中獲取所有內容塊(Blocks),是操作飛書文檔的核心步驟。
發(fā)送HTTP GET請求
blocks_response = requests.get(blocks_url, headers=headers)
功能:
向飛書API發(fā)送一個 GET請求,目標地址是 blocks_url(例如 https://open.feishu.cn/open-apis/docx/v1/documents/{document_id}/blocks)。
參數(shù)說明:
headers=headers:攜帶認證頭(包含 Authorization: Bearer {access_token}),用于權限驗證。
返回值:
blocks_response 是一個 Response 對象,包含服務端返回的原始HTTP響應。
檢查HTTP響應狀態(tài)
blocks_response.raise_for_status()
功能:
自動檢測HTTP響應狀態(tài)碼。如果狀態(tài)碼是 4xx(客戶端錯誤) 或 5xx(服務端錯誤),直接拋出異常(如 HTTPError),終止后續(xù)代碼執(zhí)行。
為什么需要它?
避免在請求失敗時繼續(xù)處理無效數(shù)據(jù)(例如令牌過期、URL錯誤、權限不足等)。
典型錯誤場景:
- 401 Unauthorized:access_token 失效或未傳。
- 404 Not Found:blocks_url 地址錯誤或文檔不存在。
解析JSON數(shù)據(jù)并提取內容塊
blocks = blocks_response.json()["data"]["items"]
將HTTP響應的原始內容(JSON格式)解析為Python字典,并提取其中的文檔塊列表。
數(shù)據(jù)結構(以飛書文檔API為例):
{
"code": 0,
"data": {
"items": [
{"block_id": "xxxx", "content": "文本內容1"},
{"block_id": "yyyy", "content": "文本內容2"}
]
}
}
它的操作可以拆解為以下步驟:
blocks_response.json():將 HTTP 響應的原始內容(JSON 格式)轉換為 Python 的字典(dict)或列表(list)。
["data"]:從 JSON 字典中提取鍵為 "data" 的值(通常包含核心數(shù)據(jù))。
["items"]:從 "data" 對應的字典中,進一步提取鍵為 "items" 的值(通常是一個列表,包含多個數(shù)據(jù)項)。
結果:
blocks 變量存儲所有文檔塊的列表,后續(xù)可用于遍歷、修改或插入新內容。
示例:

當我們將這個表格轉換為 Python 的字典列表時,結果如下:
data = {
"code": 0,
"message": "成功",
"data": {
"items": [
{"姓名": "張三", "年齡": 25, "城市": "北京"},
{"姓名": "李四", "年齡": 30, "城市": "上海"}
]
}
}
# 提取表格中的每一行(即 items 列表)
items = data["data"]["items"]
此時 items 的值是:
[
{"姓名": "張三", "年齡": 25, "城市": "北京"},
{"姓名": "李四", "年齡": 30, "城市": "上海"}
]
類比解釋
data["data"]
類似于 Excel 表格的整個數(shù)據(jù)區(qū)域(包含表頭和所有行),對應代碼中 data 字段的內容。
data["data"]["items"]
類似于 Excel 表格中所有行的數(shù)據(jù)(每一行是一個字典),對應代碼中的 items 列表。
最終結果 blocks
就是一個列表,每個元素代表一個獨立的“塊”(對應 Excel 中的一行),例如:
blocks = [
{"block_id": "段落1", "text": "這是第一段內容"},
{"block_id": "圖片1", "url": "https://example.com/image.jpg"}
]
4.定位最后一個塊的ID
last_block_id = blocks[-1]["block_id"] if blocks else None
從返回的塊列表中提取最后一個塊的 block_id。
若文檔為空(無任何塊),last_block_id 為 None,可能導致后續(xù)插入失敗。
5.插入新內容
insert_url = f"https://open.feishu.cn/open-apis/docx/v1/documents/{DOCUMENT_ID}/blocks/{last_block_id}/insert"
data = {
"content": f"**數(shù)據(jù)更新時間:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}**\n{content}",
"position": "after"
}
insert_response = requests.post(insert_url, headers=headers, json=data)
在最后一個塊之后插入新內容。
content 字段包含帶時間戳的加粗標題(Markdown語法)和傳入的 content 參數(shù)。
飛書API支持富文本格式,此處使用 ** 表示加粗,實際可能需要根據(jù)API要求調整格式
- "content": f"**數(shù)據(jù)更新時間:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}**\n{content}",
- "position": "after" # 在最后一個塊后插入
這是**字典(dict)**中的兩個鍵值對,通常用于配置內容插入邏輯(例如生成報告、更新文檔等場景)。
(1) "content": ...
功能:定義要插入的文本內容,包含動態(tài)時間和原始內容。
細節(jié):
- f"...":使用 Python 的 f-string 動態(tài)生成字符串。
- datetime.now():獲取當前時間。
- strftime('%Y-%m-%d %H:%M:%S'):將時間格式化為 年-月-日 時:分:秒(例如 2023-10-05 14:30:00)。
- **數(shù)據(jù)更新時間:...**:用 Markdown 的粗體語法包裹時間戳,使其突出顯示。
- \n{content}:換行后追加原始內容(假設 content 是已定義的變量)。
(2) "position": "after"
功能:指定插入位置為目標位置之后(例如在文檔的最后一個段落/區(qū)塊后追加內容)。
常見值:
- "after":在指定位置后插入。
- "before":在指定位置前插入。
- "replace":替換原有內容。
實際輸出示例
假設 content 的值為 "這是原始內容",則生成的 "content" 結果為:
效果:在原始內容前添加時間戳,并用粗體顯示。
**數(shù)據(jù)更新時間:2023-10-05 14:30:00**
這是原始內容
insert_response = requests.post(insert_url, headers=headers, json=data)
insert_response.raise_for_status()
logging.info("數(shù)據(jù)插入成功!")
這段代碼用于向指定的URL發(fā)送HTTP POST請求,插入數(shù)據(jù)并處理響應。
6.異常處理
try:
# ...請求代碼...
except Exception as e:
logging.error(f"插入數(shù)據(jù)失敗: {e}")
return False
捕獲網(wǎng)絡錯誤、API響應錯誤等異常,記錄日志并返回 False。
六、main()
def main():
"""主函數(shù):讀取Excel并同步到飛書"""
try:
# 讀取Excel數(shù)據(jù)
df = pd.read_excel("data.xlsx") # 替換為你的Excel路徑
markdown_table = df.to_markdown(index=False)
# 插入到飛書文檔
if insert_to_feishu(markdown_table):
print("同步成功!")
else:
print("同步失敗,請查看日志文件。")
except Exception as e:
logging.error(f"主流程異常: {e}")
markdown_table = df.to_markdown(index=False)
代碼功能
- 作用:將 pandas 的 DataFrame (df) 轉換為 Markdown 格式的表格字符串,并保存到變量 markdown_table 中。
- 參數(shù) index=False:表示生成的表格中不包含行索引列(默認會顯示索引)。
示例與輸出
假設有一個 DataFrame:
import pandas as pd
data = {
"Name": ["Alice", "Bob", "Charlie"],
"Age": [25, 30, 35],
"City": ["New York", "London", "Tokyo"]
}
df = pd.DataFrame(data)
執(zhí)行代碼:
markdown_table = df.to_markdown(index=False) print(markdown_table)
輸出結果:
| Name | Age | City |
|---------|-------|----------|
| Alice | 25 | New York |
| Bob | 30 | London |
| Charlie | 35 | Tokyo |

七、相關庫函數(shù)
1. import pandas as pd
用途:數(shù)據(jù)分析和處理(表格數(shù)據(jù)操作)。
常用函數(shù)/類:
- pd.read_csv('file.csv'):讀取 CSV 文件生成 DataFrame。
- df.to_csv('output.csv'):將 DataFrame 保存為 CSV 文件。
- df.head(n):顯示 DataFrame 前 n 行(默認 5 行)。
df.merge(df2, on='key'):按列合并兩個 DataFrame。 - df.groupby('column').sum():按列分組聚合數(shù)據(jù)。 - pd.DataFrame(data):從字典/列表創(chuàng)建 DataFrame。
# 示例:讀取 CSV 并處理數(shù)據(jù)
data = pd.read_csv("data.csv")
filtered_data = data[data["age"] > 18]
filtered_data.to_csv("adults.csv")
2. import requests
用途:發(fā)送 HTTP 請求(如 API 調用、網(wǎng)頁抓?。?。
常用函數(shù)/方法:
requests.get(url, params={}):發(fā)送 GET 請求。
requests.post(url, data={}):發(fā)送 POST 請求。 - response.json():將響應內容解析為 JSON。 - response.status_code:獲取 HTTP 狀態(tài)碼(如 200 表示成功)。 - response.text:獲取原始文本響應內容。
# 示例:調用 API 獲取數(shù)據(jù)
response = requests.get("https://api.example.com/data")
if response.status_code == 200:
data = response.json()
print(data["results"])
3. import logging
用途:記錄程序運行日志(調試、警告、錯誤等)。
常用函數(shù)/配置:
- logging.basicConfig(level=logging.INFO):設置日志級別。
- logging.info('message'):記錄一般信息。
- logging.warning('message'):記錄警告。
- logging.error('message'):記錄錯誤。
- logger = logging.getLogger(__name__):創(chuàng)建自定義日志記錄器。
# 示例:記錄程序運行狀態(tài)
logging.basicConfig(level=logging.INFO)
logging.info("程序啟動")
try:
# 某些操作
except Exception as e:
logging.error(f"發(fā)生錯誤: {e}")
4. from datetime import datetime
用途:處理日期和時間。
常用函數(shù)/方法:
- datetime.now():獲取當前時間。
- datetime.strftime('%Y-%m-%d'):格式化時間為字符串。
- datetime.strptime('2023-10-05', '%Y-%m-%d'):將字符串解析為時間對象。
- datetime.timestamp():獲取時間戳(秒數(shù))。
# 示例:生成帶時間戳的日志
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"操作時間: {current_time}")
八、完整代碼
import pandas as pd
import requests
import logging
from datetime import datetime
# 配置日志記錄
logging.basicConfig(
filename='feishu_sync.log',
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s'
)
"""
1.logging.basicConfig(...)
logging 是 Python 標準庫中的日志模塊,用于記錄程序的運行狀態(tài),方便調試和排查問題。
basicConfig() 方法用于配置日志系統(tǒng)的基本設置。
2.filename='feishu_sync.log'
指定日志輸出的文件名為 feishu_sync.log,所有日志信息都會被寫入該文件。
這樣可以在程序運行后,查看 feishu_sync.log 文件來了解程序的執(zhí)行情況。
3.level=logging.INFO
設置日志的最低級別為 INFO,即只記錄 INFO 及更高級別的日志(包括 WARNING、ERROR 和 CRITICAL)。
低于 INFO 級別的 DEBUG 級日志不會被記錄。
4.format='%(asctime)s - %(levelname)s - %(message)s'
指定日志的輸出格式,其中:
%(asctime)s:時間戳,表示日志記錄的時間(格式如 2025-02-18 12:34:56)。
%(levelname)s:日志級別,如 INFO、ERROR 等。
%(message)s:具體的日志消息內容。
"""
# 飛書API配置
APP_ID = "your_app_id"
APP_SECRET = "your_app_secret"
DOCUMENT_ID = "Gu4LwF32Ci0OUakZo50cQ8p2njk" # 目標云文檔的ID
def get_access_token():
"""獲取飛書API的access_token"""
url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
headers = {"Content-Type": "application/json"}
data = {"app_id": APP_ID, "app_secret": APP_SECRET}
try:
response = requests.post(url, headers=headers, json=data)
response.raise_for_status()
return response.json()["tenant_access_token"]
except Exception as e:
logging.error(f"獲取access_token失敗: {e}")
return None
"""
requests.post(url, headers=headers, json=data):使用 requests 庫發(fā)送一個 POST 請求到指定的 URL,并攜帶請求頭和請求體數(shù)據(jù)。json=data 會自動將字典 data 轉換為 JSON 格式的字符串。
response.raise_for_status():檢查響應的狀態(tài)碼,如果狀態(tài)碼不是 200(表示請求成功),則拋出 HTTPError 異常。
response.json()["tenant_access_token"]:將響應的內容解析為 JSON 格式,并返回其中的 tenant_access_token 字段,即獲取到的租戶訪問令牌。
except Exception as e::捕獲所有異常,并將異常對象賦值給變量 e。
logging.error(f"獲取access_token失敗: {e}"):使用 logging 模塊記錄錯誤信息,方便后續(xù)排查問題。
return None:如果發(fā)生異常,返回 None 表示獲取令牌失敗。
"""
def insert_to_feishu(content):
"""向飛書文檔插入內容"""
access_token = get_access_token()
if not access_token:
return False
# 步驟1:獲取文檔塊列表,找到最后一個塊的位置
blocks_url = f"https://open.feishu.cn/open-apis/docx/v1/documents/{DOCUMENT_ID}/blocks"
headers = {"Authorization": f"Bearer {access_token}"}
try:
# 獲取文檔結構
blocks_response = requests.get(blocks_url, headers=headers)
blocks_response.raise_for_status()
blocks = blocks_response.json()["data"]["items"]
# 找到最后一個塊的ID(用于插入位置)
last_block_id = blocks[-1]["block_id"] if blocks else None
# 步驟2:插入新內容到文檔末尾
insert_url = f"https://open.feishu.cn/open-apis/docx/v1/documents/{DOCUMENT_ID}/blocks/{last_block_id}/insert"
data = {
"content": f"**數(shù)據(jù)更新時間:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}**\n{content}",
"position": "after" # 在最后一個塊后插入
}
insert_response = requests.post(insert_url, headers=headers, json=data)
insert_response.raise_for_status()
logging.info("數(shù)據(jù)插入成功!")
return True
except Exception as e:
logging.error(f"插入數(shù)據(jù)失敗: {e}")
return False
def main():
"""主函數(shù):讀取Excel并同步到飛書"""
try:
# 讀取Excel數(shù)據(jù)
df = pd.read_excel("data.xlsx") # 替換為你的Excel路徑
markdown_table = df.to_markdown(index=False)
# 插入到飛書文檔
if insert_to_feishu(markdown_table):
print("同步成功!")
else:
print("同步失敗,請查看日志文件。")
except Exception as e:
logging.error(f"主流程異常: {e}")
if __name__ == "__main__":
main()以上就是Python實現(xiàn)Excel數(shù)據(jù)同步到飛書文檔的詳細內容,更多關于Python Excel數(shù)據(jù)同步到飛書的資料請關注腳本之家其它相關文章!
相關文章
CentOS中使用virtualenv搭建python3環(huán)境
virtualenv可以搭建虛擬且獨立的python環(huán)境,可以使每個項目環(huán)境與其他項目獨立開來,保持環(huán)境的干凈,解決包沖突問題。下面我們來詳細探討下centos中如何來搭建。2015-06-06
Python實現(xiàn)繁體中文與簡體中文相互轉換的方法示例
這篇文章主要介紹了Python實現(xiàn)繁體中文與簡體中文相互轉換的方法,涉及Python基于第三方模塊進行編碼轉換相關操作技巧,需要的朋友可以參考下2018-12-12
Python?matplotlib實戰(zhàn)之散點圖繪制
散點圖,又名點圖、散布圖、X-Y圖,是將所有的數(shù)據(jù)以點的形式展現(xiàn)在平面直角坐標系上的統(tǒng)計圖表,本文主要為大家介紹了如何使用Matplotlib繪制散點圖,需要的可以參考下2023-08-08

