在文本文件中搜索变量 - python

我试图在文本文件中搜索变量。

sid = '185'
a = ((sid)"\n")
with open(filename) as f:
  data = f.readlines()


if a in data:
        print 'its here'
else:
        print 'its NOT here'

这是我的foo.txt

['306 \ n','303 \ n','313 \ n','323 \ n','417 \ n','281 \ n','304 \ n','322 \ n',' 320 \ n','319 \ n','308 \ n','310 \ n','414 \ n','415 \ n','314 \ n','312 \ n','307 \ n','305 \ n','285 \ n','286 \ n','318 \ n','283 \ n','282 \ n','294 \ n','309 \ n' ,“ 416 \ n”,“ 418 \ n”,“ 321 \ n”,“ 185 \ n”]

我认为我的问题在于正确定义/ n吗?不确定,因为您可以告诉我一个初学者。任何帮助或建议如何做到这一点将不胜感激。

python大神给出的解决方案

您可以使用re.split和以下列表推导来获取数字,然后使用in操作数来检查成员资格:

>>> s = """['306\n', '303\n', '313\n', '323\n', '417\n', '281\n', '304\n', '322\n', '320\n', '319\n', '308\n', '310\n', '414\n', '415\n', '314\n', '312\n', '307\n', '305\n', '285\n', '286\n', '318\n', '283\n', '282\n', '294\n', '309\n', '416\n', '418\n', '321\n', '185\n']"""
>>> import re
>>> def check(var):
...    return var in [int(i.strip()) for i in re.split(r'[\[\]\',]*',s) if i.strip()]
... 
>>> check(303)
True
>>> check(444)
False

在您的情况下,您需要使用open(filename).read()而不是s。对于较大的文件,您可以使用set来更有效地检查成员资格:

>>> def check(var):
...    return var in set(int(i.strip()) for i in re.split(r'[\[\]\',]*',s) if i.strip())
... 
>>> check(444)
False
>>> check(305)
True