比较字符串并分配最匹配的你好,
有点挑战性(可能)
我正在尝试将行值与某些字符串样本列表进行匹配,并想知道样本列表中哪些项与行值最匹配。
以下是列表的示例
Sample_strings = {“Port3_Currents_587”,“Port1_Volt_8_Off”,“PortC_Volt_12”,“PortX_Curre_589_On”,“Curren_Port_1280_On”,“Currents_5sd_On_Port1”,“Port_Currents_587_On”};
如何找出哪些行与样本字符串具有最多匹配的字符,并将列表中最匹配的字符串分配给第二列?
有什么建议么?
这是我想要达到的最终结果:

谢谢,
自动化和脚本回复:比较字符串并分配最匹配的从您的问题+帖子中不明显,您是在寻找最匹配的字符还是最接近的匹配字符串(两种不同的东西,两种不同的解决方案?
对于匹配的字符串,其中一个可能有助于最短编辑脚本和选择最近的(脚本索引无法获取此帮助页面的链接)。
编辑:
来自 JMP 帮助的链接识别字符串、行或序列之间的差异 (jmp.com)
回复:比较字符串并分配最匹配的@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 ?
为什么?
回复:比较字符串并分配最匹配的- 端口X_电流_5879_开启 哪个更接近 端口X_Curre_589_On 或者 端口电流 587 是否开启?
- 端口 3_电流_5879_开 哪个更接近 端口 3_电流_587 或者 端口电流 587 是否开启?
我想说的是,考虑每个字符串的两种情况,因为它们非常接近,然后用户将决定选择哪一个
回复:比较字符串并分配最匹配的您的算法很可能不会认为它们相等。如果我不得不猜测的话,很多人会认为第二个选项更接近,因为它需要的编辑较少。对于使用最短编辑距离()的简单检查,您可以只检查插入、删除以及编辑了多少个字母。选择 Closest()可能是一种更暴力的方法,因为您可以允许它使用 9999 次编辑或类似的东西。
我的相当快速的解决方案与您提供的最匹配的字符串不符(只是希望检查开头的公共序列有多长)

关于编辑距离的链接很少
如果您有 JMP18,您也可以使用 Python 进行字符串距离比较(但 JMP 的方法很可能已经足够了)。如果您允许自己使用 Python 的非标准库,那么您将获得更多选择。
回复:比较字符串并分配最匹配的我会看看。谢谢 Jarmo。
您是否手动创建了上述代码片段中的 ShorestEdit/ChooseCloset 列?如果没有,您介意分享一下您的逻辑吗?
谢谢,
回复:比较字符串并分配最匹配的尝试手动计算最接近的匹配项的工作量太大,因此我确实使用了我提到的那些功能。
如果您检查允许编辑的脚本索引示例,则选择最近非常容易实现(第一个参数是表中的值,第二个参数是样本列表,并根据需要增加最大编辑数)。

回复:比较字符串并分配最匹配的循环遍历列表,使用最短编辑脚本(或编写您自己的算法)对每个值执行计算,选择最匹配的值?