示例,我在文件中有以下几行:
- 汤姆是个男人
- 莎拉是个女人
- Alex也是一个人
醇>
我想搜索“Sara”,但想像
一样返回整个 def findLine(self, str):
...
当我致电findLine("Sara")
时,会返回"2. Sara is a woman"
如何使用Python和正则表达式(或其他非正则表达式方法)实现此目的
答案 0 :(得分:5)
我将str
重命名为content
,请参阅senderle的评论
def findLine(self, content, search_str):
for line in content.splitlines()
if search_str in line:
return line
#or something else because the search_str was not found
return None
或者如果你想要一个包含sarah的所有行的列表
def findLine(self, str, search_str):
return [x for x in str.splitlines() if search_str in x]
search_str
是您想要找到的字符串。
答案 1 :(得分:2)
def findline(filename, search_string):
with open(filename, 'r') as infile:
for line in infile:
if search_string in line:
return line
else:
return None
答案 2 :(得分:2)
您不需要RegEx来执行此操作。您可以使用file.readline()并检查该行是否包含“Sara”。如果有,则返回该行。使用for-each循环检查文件中的每一行。
编辑:
def findlines(filename, searchterm):
lines = []
line = filename.readline()
while line:
if searchterm in line:
lines.append(line)
line = filename.readline()
return lines
答案 3 :(得分:1)
def find(name)
for line in open('file.txt'):
if name in line:
return line
答案 4 :(得分:0)
嗯,你不需要正则表达式:
def findline(search_string, file_name, offset=0):
with open(file_name, 'r') as infile:
infile.seek(offset)
for line in infile
if search_string in line:
return line
(上面实际上只是将其他'加上file_name作为函数参数和偏移量的组合,这意味着您现在可以遍历文件并获得所搜索字符串的多次发生)。
答案 5 :(得分:0)
In [6]: lines="""1. Tom is a guy
2. Sara is a woman
3. Alex is a guy too"""
In [10]: lines=lines.splitlines()
In [11]: def findLine(word):
....: return filter(lambda x: word in x,lines)
....:
In [12]: findLine("Alex")
Out[12]: ['3. Alex is a guy too']