Назначение новой переменной для каждого цикла в цикле while - PullRequest
0 голосов
/ 15 ноября 2011

Я пытаюсь сослаться на строку, в которой появляется ключевое слово, если оно появляется несколько раз, мне нужно иметь возможность ссылаться на каждую строку из цикла while. Также мне нужно выделить ключевое слово в строке. Спасибо!

def main():
    print("The Great Search Engine, by Eric Santos")
    # input from user name of database file
    dname = input("Enter name of database file: ")
    # input from user seach term to look for
    term = input("Enter keyword to search for: ")
    # open html file for writing
    outfile = open("mypage.html", "w")

    # open database file for reading
    infile = open(dname,"r")
    # for each line in the file:
    hits=0
    i = 0
    for line in infile:
        listword = line.split()
        for word in listword:
            if term == word:
                print(word)
                print(line)
                # read in URL line
                url = infile.readline()
                print(url)
                hits=hits+1
                i=i+1

    if hits==1:
        print ("Keyword", term, "found", hits,"times")
        print("<html>", file=outfile)
        print("<head><title>Search Findings</title></head>", file=outfile)
        print("<body>", file=outfile)
        print('<h2><p align=center>Search for "', term, '"</h2>"', file=outfile)
        print("<p align=center>", file=outfile)
        print("<table border>", file=outfile)
        print("<tr><th> Hits <th>URL</tr>", file=outfile)
        print("<html>", file=outfile)
        print("<tr><td>",line,"<td><a href=", url,"> ",url,"</a></tr>", file=outfile)
        print("</table>", file=outfile)
        print("</body>", file=outfile)
        print("</html>", file=outfile)

    if hits ==2:
        print ("Keyword", term, "found", hits,"times")
        print("<html>", file=outfile)
        print("<head><title>Search Findings</title></head>", file=outfile)
        print("<body>", file=outfile)
        print('<h2><p align=center>Search for "', term, '"</h2>"', file=outfile)
        print("<p align=center>", file=outfile)
        print("<table border>", file=outfile)
        print("<tr><th> Hits <th>URL</tr>", file=outfile)
        print("<html>", file=outfile)
        print("<tr><td>search <b>engine</b><td><a href=", url,"> ",url,"</a></tr>", file=outfile)
        print("<tr><td>search <b>engine</b><td><a href=", url,"> ",url,"</a></tr>", file=outfile)
        print("</table>", file=outfile)
        print("</body>", file=outfile)
        print("</html>", file=outfile)

        outfile.close()

    if hits == 0:
        print("Keyword", term,"not found")

        # use find to see if search term is in line
        # if find is successful
            # add one to the hits
            # output the file to the html file
    # if after count still zero
        # show to shell no hits
        # output to html file "no hits"
    # else
        # output to shell how many hits
    infile.close()

main()

# write out the end of html to the html file
# close file

Ответы [ 2 ]

0 голосов
/ 15 ноября 2011

Я внес некоторые изменения в ваш код. Я использую Python 2.6, поэтому я изменил ввод на raw_input и добавил из future import print_function

Затем я перешел на readlines (), чтобы прочитать весь файл в строку

Я делю на "", чтобы вы не разбивали на каждый символ.

Понятия не имею, о чем вы тут думаете: url = infile.readline ()

Ваш вывод указывает на то, что вы хотите напечатать URL-адрес, но у вас есть текстовый файл для ввода, и он не в сумме соответствует URL-адресу, поэтому подумайте, чего вы действительно хотите.

Взгляните и, возможно, уточните свой вопрос.

from __future__ import print_function

def main():
    print("The Great Search Engine, by Eric Santos")
    # input from user name of database file
    dname = raw_input("Enter name of database file: ")
    # input from user seach term to look for
    term = raw_input("Enter keyword to search for: ")
    # open html file for writing
    outfile = open("mypage.html", "w")

    # open database file for reading
    infile = open(dname,"r")
    # for each line in the file:
    hits=0
    i = 0
    for line in infile.readlines():
    print(line)
    listword = line.split(" ")
    print(listword)
    for word in listword:
        if term == word:
            print(word)
            print(line)
            # read in URL line
            url = infile.readline()
            print(url)
            hits=hits+1
            i=i+1
0 голосов
/ 15 ноября 2011

Вы говорите, что хотите ссылаться на каждую строку из цикла while ... но в вашей программе нет цикла while.

Также, какова цель вашей переменной hits и переменной i (почему две переменные?)

...