检查一对字符串是不是是压缩列表的子字符串 - python

Posted

技术标签:

【中文标题】检查一对字符串是不是是压缩列表的子字符串 - python【英文标题】:Checking if a pair of strings are a substring of a zipped list - python检查一对字符串是否是压缩列表的子字符串 - python 【发布时间】:2018-11-09 22:00:06 【问题描述】:
b_list=["some data"]
s_list=["some data"]

approved_b=[list of "b_list" elements that are approved]
approved_s=[list of "s_list" elements that are approved]

br, sr=[],[]
for b,s in zip(b_list, s_list):
    if (b,s) in zip(approved_b, approved_s):
        br.append(b)
        sr.append(s)

问题是这样的:

如果你有alpha,它需要识别alpha等价于alpha 1alpha 100zoom alpha等,这可以通过x in y来完成。 但是,我需要能够同时(一次两次)完成整个 zip。

例子:

b_list=['alpha', 'beta time', 'gamma', 'ohm']
s_list=['gary', 'paul', 'lime', 'apple']

approved_b=['alpha 1', 'beta', 'gamma 2', 'ohm']
approved_s=['gary time', 'zoom', 'lime time', 'appler']

结果需要是:

br=['alpha','gamma']
sr=['gary','lime']

所以基本上,当它通过验证时,它需要检查(b_list, s_list) 中的(b,s) 对是否与(approved_b,approved_s) 匹配,并且b 可以是approved_b 的子字符串,approved_b 可以是b 的子字符串同时s 可以是approved_s 的子字符串,approved_s 可以是s 的子字符串。

【问题讨论】:

您的要求并不完全清楚。但是,如果您可以使用仅处理 b 值的 x in y 向我们展示您的代码,那么应该很容易向您展示如何更改它以处理 zip(b, s) 值。 为什么ohm, apple没有出现在输出中,因为"ohm" in "ohm" and "apple" in "appler" == True?注意:b in approved_b and approved_b in b => b == approved_b - 我不确定你的意思。 此时,我认为“apple”中的“apple”不应该返回true。所以它应该只在“apple”+一些其他东西(如“apple SDGSD”)时返回true。但无论哪种方式都可以。 b= alpha,approved_b= alpha 1 因此,approved_b 中的 b 将返回 true。 但我需要检查 zip 的两个内容。另外,我需要能够检查 b 中的approved_b 是否也返回true(或不返回) 【参考方案1】:

我不得不从您的代码中做出很多假设,因为我并没有完全遵循您的描述。听起来您只想匹配approved 列表中的整个单词,因此您可以在每个条目的split() 上使用in,例如:

def match_pair(e1, e2, lst1, lst2):
    return any(e1 in l1.split() and e2 in l2.split() for l1, l2 in zip(lst1, lst2))

In []:
br, sr = zip(*[(b, s) for b, s in zip(b_list, s_list) 
               if match_pair(b, s, approved_b, approved_s)])
print(br)

Out[]:
('alpha', 'gamma')

In []:
print(sr)

Out[]:
('gary', 'lime')

在更长的时间里,这将是:

br, sr = [], []
for b, s in zip(b_list, s_list):
    if match_pair(b, s, approved_b, approved_s):
        br.append(b)
        sr.append(s)

希望这会有所帮助。

【讨论】:

看起来像我要找的东西。我仍在处理数据以检查它是否正常工作。泰! 您可能希望将已批准的列表预先拆分为单词集,因为使用一组列表会显着提高性能。

以上是关于检查一对字符串是不是是压缩列表的子字符串 - python的主要内容,如果未能解决你的问题,请参考以下文章

如何检查字符串是不是具有列表中的子字符串?

检查字符串是不是包含子字符串列表并保存匹配的子字符串

如何检查字符串是不是包含 JavaScript 中的子字符串?

如何检查字符串是不是包含 JavaScript 中的子字符串?

如何检查字符串是不是包含 JavaScript 中的子字符串?

如何检查字符串是不是包含 JavaScript 中的子字符串?