在文本文件中搜索变量

在文本文件中搜索变量

问题描述:

即时尝试搜索文本文件中的变量。在文本文件中搜索变量

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?不确定,因为你可以告诉我一个初学者。任何帮助或建议如何做到这一点,将不胜感激。

+1

欢迎来到本网站。你能告诉我们它在运行时的功能吗? – msturdy 2015-03-02 18:30:09

+4

'a = sid +“\ n”'.. – 2015-03-02 18:33:31

+0

这给了我想找的东西。 – wwi 2015-03-02 18:39:05

您可以使用re.split和下面的列表中理解到GRUB中的号码,然后使用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 
+0

我明白这也能起作用,但它可能对我需要的东西有很大帮助。不管谢谢你。 – wwi 2015-03-02 18:40:55

+0

@wwi不客气!所以如果你发现这个答案有帮助,你可以通过投票和接受答案告诉社区! – Kasramvd 2015-03-02 18:46:15

可以使用re.search功能搜索字符串

foo = """['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']""" 

sid = '185' 
a = sid + '\n' 

if re.search(a,foo): 
    print "its here" 
else: 
    print "its not here" 

在一般情况下,如果有可能不止一个行foo.txt你可以使用:

sid = '185' 
a = sid + '\\n' 
filename = 'foo.txt' 
with open(filename) as f: 
    for line in f: 
     if a in line: 
      print 'its here' 
      break 
    else: 
     print 'its NOT here' 

不要忘了'\\n'如果foo.txt真的是字面上你给它转义反斜线。