Python: 如何用 difflib.get_close_matches() 比對字串相似度並儲存結果

加入好友
加入社群
Python: 如何用 difflib.get_close_matches() 比對字串相似度並儲存結果 - 儲蓄保險王

code:

import difflib
import json
import os

# 示範用的資料
log_sensors = ["temperture", "humidy", "presure"]  # 可能打錯的文字
rd_sensors = ["temperature", "humidity", "pressure", "voltage", "current"]  # 正確的文字

# 建立空字典來存储匹配結果
matches = {}

# 對每個 log_sensors 中的項目尋找相似項
for sensor in log_sensors:
    # 使用 difflib 尋找相似的文字
    # n=5: 最多回傳5個匹配結果
    # cutoff=0.6: 相似度閾值,0~1之間越大要求越嚴格
    match = difflib.get_close_matches(sensor, rd_sensors, n=5, cutoff=0.6)
    
    # 如果找到匹配項存入字典沒找到則存入 None
    if match:
        matches[sensor] = match
    else:
        matches[sensor] = None
    
    # 印出比對結果
    print(f"原始文字: {sensor}")
    print(f"相似項目: {match}")
    print("-" * 30)

# 設定輸出路徑
# 假設目前在 /path/to/project
dirname = "/path/to/project"
dir_ex = os.path.join(dirname, "export")
path_ex = os.path.join(dir_ex, "similar.json")

# 建立輸出資料夾如果不存在
os.makedirs(dir_ex, exist_ok=True)

# 將結果寫入 JSON 檔案
with open(path_ex, "w", encoding="UTF-8") as f:
    json.dump(matches, f, indent=4, ensure_ascii=False)

print(f"檔案已經輸出到\n{path_ex}")

輸出結果:

Python: 如何用 difflib.get_close_matches() 比對字串相似度並儲存結果 - 儲蓄保險王

json:

Python: 如何用 difflib.get_close_matches() 比對字串相似度並儲存結果 - 儲蓄保險王

這個程式的主要功能:

  1. 比對兩個列表中的相似文字
  2. 使用 difflib 進行模糊匹配
  3. 將結果整理成字典格式
  4. 輸出成易讀的 JSON 檔案

常用參數說明:

  • n: 要返回的最大匹配數量
  • cutoff: 相似度閾值(0.6 表示需要 60% 相似)
  • indent: JSON 檔案的縮排格式
  • ensure_ascii: 設為 False 可正確處理中文

推薦hahow線上學習python: https://igrape.net/30afN

加入好友
加入社群
Python: 如何用 difflib.get_close_matches() 比對字串相似度並儲存結果 - 儲蓄保險王

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *