如何在预定义的列表中搜索和查找多个字符串到python中的另一个列表

时间:2013-04-26 17:03:10

标签: python-2.7

我对python很新。我正在寻找一个搜索列表和查找数据的解决方案。

我用谷歌搜索但无法找到任何特定于我的代码。我试着找到,设置它似乎不起作用。

我正在尝试搜索并匹配另一个列表中的预定列表中的多个字符串(它实际上是来自串行端口的一个resoponse)

这是我的代码

responsetocheck = "replyid, ID,ID,transmitid"

datafromport= "replyid, ID, timestamp,sometherinfo,someotherinfo1,ID,transmitid"

我必须比较并找到整个responsetocheck,如果所有字符串都与responsetcheck匹配,则返回true。

我在下面给出了选项

if (responsetocheck  in datafromport)  # it's not finding the data

if (set(responsetocheck) <= set(datafromport) )  # returns True even if 2- 3 values
                                                 # are matching - the reverse way of
                                                 # checking just returns true though
                                                 # if just one matches.

responsetocheck[0] in datafromport [0] # and the respective index's : getting 
                                       # out of range error

 if all(word in data for word in response) # doesnt seem to work as well

选项可能有一些语法错误。我列出的只是为了让您知道我使用的选项。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你有varibles responsetocheck和来自端口的数据,这两个端口都包含一个字符串,表示你要检查的逗号分隔的单词列表。在这种情况下,您需要在进行比较之前将字符串设置为python列表。像这样:

responsetocheck = responsetocheck.replace(' ','').split(',')
datafromport = datafromport.replace(' ', '').split(',')

您现在有两个列表如下所示:

['replyid', 'ID', 'ID', 'transmitid'] #responsetocheck
['replyid', 'ID', 'timestamp', 'sometherinfo', 'someotherinfo1', 'ID', 'transmitid'] # datafromport

然后你必须遍历responsetocheck列表中的每个单词,并检查它是否在datafromport列表中找到。以下代码应该为您提供所需的结果(如果我理解正确的话):

all(s in datafromport for s in responsetocheck)