Python-检查字符串的一部分是否在列表中,并给出其匹配项的索引

时间:2018-06-19 13:10:47

标签: python

我正在尝试获取一段代码,以返回在列表中找到匹配项的索引,以便可以将另一个项目与此索引进行比较。 (基本上允许将两个单独的字符串与列表中的同一项目进行比较)。如果完全匹配,我就能得到匹配,但不能使它与部分字符串一起使用。这是一些伪代码来显示我的身份:

mylist = ['abc', 'def', 'ghi', 'jkl', 'mno']
str1 = 'does mn have anything to do with it?'
str2 = 'I think mn is there'

b = [i for i, s in enumerate(mylist) if str1 in s]
print(b)

所以我的问题是如何获取返回的'mno'索引,以便在第一次检查后可以将str2与之比较。如果有更好的方法可以解决这个问题,请爱听它

5 个答案:

答案 0 :(得分:1)

这样吧:

b = []
for i in str1.split():
    for idx, j in enumerate(mylist):
        if i in j:
            b.append(idx)

...或者如果您要了解列表信息:

b = [idx for i in str1.split() for idx, j in enumerate(mylist) if i in j]

输出:

[4]

答案 1 :(得分:1)

从问题开始,str1 in s永远不会为真,因为mylist的任何元素都不包含整个str1字符串。

假设单词边界很重要,则可以拆分字符串,然后找到包含该标记的字符串的索引

b = [] 
for s1 in str1.split():
    for i, s2 in enumerate(mylist):
        if s1 in s2:
            b.append(i)

答案 2 :(得分:0)

也许这个可以帮忙!

mylist = ['abc', 'def', 'ghi', 'jkl', 'mno']
str1 = 'does mn have anything to do with it?'
str2 = 'I think mn is there'

b = [i  for i, s in enumerate(mylist) for st in str2.split(' ') if st in s]
print(b)

答案 3 :(得分:0)

也许最好将其放入函数中?

str = 'does mno have anything to do with it?'
str2 = 'I think mn is there'
mylist = ['abc', 'def', 'ghi', 'jkl', 'mno']

def are_you_here(str, list):
    return [list.index(x) for x in list if x in str]

are_you_here(str, mylist)
are_you_here(str2, mylist)

输出:

[4]
[]

答案 4 :(得分:0)

这可能会有所帮助,因为在str2中,您正在搜索特定的关键字“ mn”,因此我们将str1拆分为简单的单词列表,然后遍历该列表以查找项中存在mn的部分。

mylist = ['abc', 'def', 'ghi', 'jkl', 'mno']

str1 = 'does mn have anything to do with it?'
str2 = 'I think mn is there'

for i in str1.split(" "):
    for j in mylist:
    if i in j:
        print("match found and its for " + i + " which is partially exist in " + j)