В Python 3, как я могу найти строку в отдельном файле .txt? - PullRequest
0 голосов
/ 15 ноября 2011

Я пытаюсь написать код на Python 3, который позволит пользователю ввести имя файла .txt.Затем пользователь вводит ключевое слово или фразу, и Python ищет этот текстовый файл и возвращает строку, в которой находится фраза.Кроме того, программа запишет некоторые вещи в файл .html, но я могу позаботиться об этом, как только выясню эту часть.Вот мой код:

def main():            # Main function

    list_variable = 0
    search_term = 0
    line = 0
    links = 0       #Set list variables search and links equal to empty
    print("The Great Search Engine, by Jackson Reeves")#Print Intro
    filename = input("Enter name of database file: ")#Ask for filename
    infile = open(filename, "r")                #Use read function to read file
    keyword = filename.find(input("Enter keyword to search for: "))
    for line in filename.readlines():
        line = line + 1
    url = "http://www.aol.com"
    url2 = "http://www.toyota.com"
    url3 = "http://www.uky.edu"
    url4 = "http://www.google.com"
    url5 = "http://www.eku.edu"
    url6 = "http://www.yahoo.com"
    url7 = "http://www.youtube.com"
    url8 = "http://www.msn.com"


#if keyword exists in file, execute these statements
    p1 = ("<html>\n")
    out_file = open("mypage.html", "wt")
    out_file.write(p1)

    p2 = ("<head><title>Search Findings</title></head>\n")
    out_file.write(p2)

    p3 = ("<body>\n")
    out_file.write(p3)

    p4 = ('<h2><p align=center>Search for "'+keyword+'"</h2>\n')
    out_file.write(p4)

    p5 = ("<p align=center>\n")
    out_file.write(p5)

    p6 = ("<table border>\n")
    out_file.write(p6)

    p7 = ("<tr><th>Hit<th>URL</tr>\n")
    out_file.write(p7)

    #if keyword is in line one, add this statement
    p8 = ('<tr><td>search <b>"'+keyword+'"</b><td><a href="'+url+'"> '+url+'</a></tr>\n')
    out_file.write(p8)

    #if keyword is in line three, add this statement
    p9 = ('<tr><td>search <b>"'+keyword+'"</b><td><a href="'+url2+'"> '+url2+'</a></tr>\n')
    out_file.write(p9)

    #if keyword is in line five, add this statement
    p10 = ('<tr><td>search <b>"'+keyword+'"</b><td><a href="'+url3+'"> '+url3+'</a></tr>\n')
    out_file.write(p10)

    #if keyword is in line seven, add this statement
    p11 = ('<tr><td>search <b>"'+keyword+'"</b><td><a href="'+url4+'"> '+url4+'</a></tr>\n')
    out_file.write(p11)

    #if keyword is in line nine, add this statement
    p12 = ('<tr><td>search <b>"'+keyword+'"</b><td><a href="'+url5+'"> '+url5+'</a></tr>\n')
    out_file.write(p12)

    #if keyword is in line eleven, add this statement
    p13 = ('<tr><td>search <b>"'+keyword+'"</b><td><a href="'+url6+'"> '+url6+'</a></tr>\n')
    out_file.write(p13)

    #if keyword is in line thirteen, add this statement
    p14 = ('<tr><td>search <b>"'+keyword+'"</b><td><a href="'+url7+'"> '+url7+'</a></tr>\n')
    out_file.write(p14)

    #if keyword is in line thirteen, add this statement
    p15 = ('<tr><td>search <b>"'+keyword+'"</b><td><a href="'+url8+'"> '+url8+'</a></tr>\n')
    out_file.write(p15)

    p16 = ("</table>\n")
    out_file.write(p16)

    p17 = ("</body>\n")
    out_file.write(p17)

    p18 = ("</html>\n")
    out_file.write(p18)

    out_file.close

#if no keyword exists in file, execute these statements
    p19 = ("<html>\n")
    out_file = open("mypage.html", "wt")
    out_file.write(p19)

    p20 = ("<head><title>Search Findings</title></head>\n")
    out_file.write(p20)

    p21 = ("<body>\n")
    out_file.write(p21)

    p22 = ('<h2><p align=center>Search for "'+keyword+'"</h2>\n')
    out_file.write(p22)

    p23 = ("<p align=center>\n")
    out_file.write(p23)

    p24 = ("<table border>\n")
    out_file.write(p24)

    p25 = ('<tr><td>'+keyword+' <td> not found </tr>\n')
    out_file.write(p25)

    p26 = ('</table>\n')
    out_file.write(p26)

    p27 = ('</body>\n')
    out_file.write(p27)

    p28 = ('</html>\n')
    out_file.write(p28)

    out_file.close



main()

1 Ответ

1 голос
/ 15 ноября 2011

Похоже, что часть, которую вы пропустили, это как искать 'txt' файлы. Этот фрагмент может помочь вам начать:

import glob

keyword = raw_input('Enter a keyword to search for: ')
for filename in glob.glob('*.txt'):
    with open(filename) as f:
        for lineno, line in enumerate(f, 1):
            if keyword in line:
                print repr(keyword), 'found on line', lineno, 'in', filename, ':', repr(line)

Обратите внимание, if keyword in line - это самый простой способ начать работу, но это не сложный фильтр (поиск "порт" будет соответствовать "важному").

Более сложный подход будет использовать регулярные выражения (например, re.search(r'\bport\b', line) будет соответствовать "порт", но не "важно").

...