python 2.7查找列表失败,但迭代列表找到它

时间:2016-01-20 20:35:15

标签: list python-2.7 member

我寻求帮助的日子。 我有一个很大的字符串列表,从13225行文本文件创建:

with open(dest_file) as f2:
    content_dest = [line.rstrip('\n') for line in f2]

我的搜索字符串是mp。 检查列表中的mp失败。列表中的所有项目都是

<type str>

当我遍历列表时,找到了mp

我没有看到任何明显(再次)为什么会这样。我在列表索引之后,所以我可以通过访问大列表中我需要的索引来处理索引处的数据。由于我的迭代工作&#39;,我想我的问题是如何获得列表中的&#39; mp&#39;代码实际工作..?和/或为什么列表中没有mp&#39}工作??非常感谢。

mp = 'r1_crvR_2_29040_-8580_180'
chk = mp in content_dest
print '**', chk

for x in content_dest:
    chk = mp in x
    if chk:
        print 'Found:', mp, x
        print type(mp), type(x)

for i in range(0, len(content_dest)):
    chk = mp in content_dest[i]
    if not chk:
        pass
    else:
        print 'Found:', mp, content_dest[i], i

结果:

** False
Found: r1_crvR_2_29040_-8580_180       Name "r1_crvR_2_29040_-8580_180"
<type 'str'> <type 'str'>
Found: r1_crvR_2_29040_-8580_180       Name "r1_crvR_2_29040_-8580_180"  11846

2 个答案:

答案 0 :(得分:0)

在列表或列表项目中搜索存在差异。

例如,a不在列表中:

>>> L = ['abc', 'xyz']
>>> 'a' in L
False

但它位于列表的一个项目中:

>>> for x in L:
...     if 'a' in x:
...        print 'found'
... 
found

下面:

>>> 'a' in L

相当于:

chk = mp in content_dest

并循环到上面的循环。

答案 1 :(得分:0)

mp in list

这适用于:检查字符串是否在列表中。 正如我从上面的代码中可以理解的那样,文件中只有一行包含请求的子字符串。这一行是:

Name "r1_crvR_2_29040_-8580_180"

为了便于理解,我将向您展示另一个例子:

my_list = ["abc"]
check = 'a' in my_list

check应该是什么结果? 是的,当然,因为我们的列表中没有这个字符串a。 为了验证是否存在一些由我们的字符串组成的字符串,我们可以这样做:

double_check = any(['a' in x for x in my_list])

double_check将告诉我们列表中是否有一些由请求的字符串组成的字符串。