比較字串並分配最匹配的你好,
有點挑戰性(也許)
我正在嘗試將行值與某些字串範例列表進行匹配,並想知道範例列表中的哪些項目與行值最匹配。
這是列表的範例
Sample_strings = { "Port3_Currents_587", "Port1_Volt_8_Off", "PortC_Volt_12", "PortX_Curre_589_On", "Curren_Port_1280_On","Currents_5sd_On", "Curren_Port_1280_On","Currents_5sd_OnOn_Port1"」Port_Ons, 7_7_Ons_5sd_Ons_Port"S7_7_oo_S7_S7_S7_S7_S7;
如何找到哪些行與範例字串具有最匹配的字符,並將列表中最匹配的字串分配給第二列?
有什麼建議麼?
這是我想要達到的最終結果:

謝謝,
自動化和腳本編寫回覆:比較字串並分配最匹配的@jthi我正在從列表中尋找最匹配的字串。我知道最短編輯腳本索引,但是我試圖弄清楚如何從隨機排序的範例清單中分配最接近的匹配字串
回覆:比較字串並分配最匹配的我可以使用什麼標準來確定字串之間的最佳匹配? SES 中「常見」?能分享一個例子嗎?
回覆:比較字串並分配最匹配的我認為這取決於你認為「最匹配」的是什麼。幾個例子:
- PortX_Currents_5879_On哪個比較接近PortX_Curre_589_On或Port_Currents_587_On ?
- Port3_Currents_5879_On哪個比較接近Port3_Currents_587或Port_Currents_587_On ?
為什麼?
回覆:比較字串並分配最匹配的- PortX_Currents_5879_On 哪個比較接近 PortX_Curre_589_On 或者 Port_Currents_587_On ?
- 埠 3_Currents_5879_On 哪個比較接近 埠3_Currents_587 或者 Port_Currents_587_On ?
我想說的是,考慮每個字串的兩種情況,因為它們非常匹配,然後用戶將決定選擇哪一種
回覆:比較字串並分配最匹配的您的演算法很可能不會認為它們相等。如果我必須做出猜測,很多人會認為第二個選項更接近,因為它需要更少的編輯。對於使用最短編輯距離()的簡單檢查,您只需檢查插入、刪除以及編輯了多少個字母。選擇 Closest()可能是更暴力的方法,因為您可以允許它使用 9999 次編輯或類似的東西。
我相當快速的解決方案與您提供的最匹配字串不符(只想檢查開頭的公共序列有多長)

關於編輯距離的閱讀連結很少
如果您有 JMP18,您也可以使用 Python 進行字串距離比較(但很可能 JMP 的方法就足夠了)。如果您允許自己在 Python 中使用非標準函式庫,您將獲得更多選擇。
回覆:比較字串並分配最匹配的我會看看。謝謝賈莫。
您是否在上面的程式碼片段中手動建立了 ShorestEdit/ChooseCloset 欄位?如果不是,您介意分享您的邏輯嗎?
謝謝,
回覆:比較字串並分配最匹配的嘗試手動計算最接近的匹配項的工作量太大,因此我確實使用了我提到的那些函數。
如果您檢查允許編輯的腳本索引範例(第一個參數是表中的值,第二個參數是範例清單並根據需要增加最大編輯計數),則「選擇最近」非常容易實現。

回覆:比較字串並分配最匹配的循環列表,使用最短編輯腳本(或編寫您自己的演算法)對每個值執行計算,選擇最匹配的一個?