python 2.7 在列表中查找失败,但遍历列表找到它

python 2.7 find in list fails, but iterating over list finds it

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

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

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

<type str>

当我遍历列表时,找到 mp

我(再次)看不出有什么明显的原因。我在一个列表索引之后,所以我可以通过访问大列表中我需要的索引来弄乱索引处的数据+一些东西。由于我的迭代 'work',我想我的问题是如何让 'mp in list' 代码实际工作..? And/or 为什么列表中的 mp 不起作用??非常感谢。

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

在列表中搜索或在列表项中搜索是不同的。

例如,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

你的循环到上面的循环。

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 将显示我们的列表中是否有某个字符串由请求的字符串组成。