是否获得出现文件中单词出现的行?

时间:2018-11-09 22:12:33

标签: python

在下面的引言中是我的问题。我能够得到指示的输出,但是在出现单词出现的问题中却无法得到之前的数字。

  

为以下函数编写函数定义,然后调用   测试它的功能。功能:

     

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."

2 个答案:

答案 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')