在文本文件中搜索变量
问题描述:
即时尝试搜索文本文件中的变量。在文本文件中搜索变量
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?不确定,因为你可以告诉我一个初学者。任何帮助或建议如何做到这一点,将不胜感激。
答
您可以使用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
答
可以使用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
真的是字面上你给它转义反斜线。
欢迎来到本网站。你能告诉我们它在运行时的功能吗? – msturdy 2015-03-02 18:30:09
'a = sid +“\ n”'.. – 2015-03-02 18:33:31
这给了我想找的东西。 – wwi 2015-03-02 18:39:05