在下面的引言中是我的问题。我能够得到指示的输出,但是在出现单词出现的问题中却无法得到之前的数字。
为以下函数编写函数定义,然后调用 测试它的功能。功能:
search_file(filename, searchword)
应接受文件名(文件fields.txt已被 Moodle提供)和用户指定的搜索词。搜索 文件中出现该单词(如果存在)的每一行 它打印出行号之前的行。重要的是 还将相同的输出写到名为
fieldsModified.txt
的文件中。
例如:
search_file("Fields-of-Athenry", "watched")
以上内容的输出应采用以下格式:
9 - Where once we watched the small free birds fly.
21 - Where once we watched the small free birds fly.
26 - She watched the last star falling
33 - Where once we watched the small free birds fly."
答案 0 :(得分:1)
您可以通过多种方式执行此操作;我认为这是最简单的方法:
def search_file(filename, searchword):
my_file = open(filename)
output_file = open('fieldsModified.txt', 'w+')
for i, line in enumerate(my_file):
if searchword in line:
print( str(i) + ' - ' + line )
output_file.write( str(i) + ' - ' + line )
my_file.close()
output_file.close()
是否适合您的需求取决于您需要搜索的文件大小,是否关心大写还是小写等。我不确定这是否可以直接解决您遇到的问题,所以如果我我想念你想问的话,请这么说...
答案 1 :(得分:0)
尝试一下:
def search_file(filename, searchword):
lines = [line.rstrip('\n') for line in open(filename)]
lineCount = 1
results = []
for line in lines:
if searchword in line:
results.append(str(lineCount) + "-" + line)
lineCount += 1
with open('fieldsModified.txt', 'w') as f:
for item in results:
f.write("%s\n" % item)
for each in results:
print(each)
search_file('fields.txt', 'watched')