python 文本文件中查找指定的字符串

有txt如下:
set internet Active
#set internet Active
# set internet Active
其余内容忽略。

假设搜索到set internet Active,且判断前面是否带#号,如果带#号返回-1
如果不带#号返回0
注意:
该文件中可能只要有一行不带#号的set internet Active,那么返回0
#和set internet Active之间可能会存在空格
问:
如何实现?

def find(lists):
for list0 in lists:
if list0.find('set internet Active')>=0:
if list0.find('#')>=0:
continue
else:
return 0 #有一行不带#号的set internet Active,那么返回0
return -1 #若没有不带号的set internet Active,那么返回-1

if __name__=='__main':
lists = ['set internet Active','#set internet Active','# set internet Active']
#lists 是从文件中读出内容的列表
findout=find(lists) #调用函数
print(findout) #打印结果
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-05-21
#coding=gbk
#下面就是代码,测试了一下没有问题
#python 2.7.5
def srch(fileName):
f = open(fileName,'r').read()
s = f.split('\n')
a0 = s[0]
for i in range(0,len(s)):
if len(s) == 1: #这一行我不知道有没有用,判断文本是否只有一行
if a0[:1] != '#':
print '0' #return 0
break
a = s[i]
if a[:1] == '#':
print '-1' #return -1
else:
print '0' #return 0

print srch('abc.txt') #abc.txt is your file本回答被网友采纳
第2个回答  2013-05-21
usage regex:

patt = re.compile(r'^(?P<flag>\#)\s*(?P<content>set\s+internet\s+Active)')
第3个回答  2013-05-21
“该文件中可能只要有一行不带#号的set internet Active,那么返回0”

这句话重新描述一下吧

另外,“返回0“是指给谁、给什么返回0?