All pastes #746240 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-10-23 02:20 UTC
rendered paste body
import glob
from string import punctuation
AvailableFiles = set()
SearchDictionary = dict()
StopList = []


def ExtractLineWords(line):
    returnwords = set()
    linesplit = line.split()
    numsplit = len(linesplit)
    for i in range(numsplit):
        linesplit[i] = linesplit[i].lower().strip(punctuation)
        if linesplit[i] != "":
            returnwords.add(linesplit[i])
    return returnwords

def ExtractFileWords(textFile):
    filewords = set()
    File = open(textFile, "r")
    for line in File:
        linewords = ExtractLineWords(line)
        for word in linewords:
            if word in StopList:
                continue
            if word in filewords:
                continue
            filewords.add(word)
    File.close()
    return filewords

def IndexFile(textFile):
    filewords = ExtractFileWords(textFile)
    for word in filewords:
        if word not in SearchDictionary:
            SearchDictionary[word] = [textFile]
        elif textFile not in SearchDictionary[word]:
            SearchDictionary[word].append(textFile)

def AddFiles(TextFiles):
    for File in TextFiles:
        AvailableFiles.add(str(File))
        IndexFile(str(File))

def find(SearchDictionary, CommandList):
    if CommandList in SearchDictionary:
        return SearchDictionary(CommandList)
    else:
        return set()


print "Welcome to compu-search.  This program will search through your files for any terms you input and tell you which .txt files they are located in.  Please use and and or to seperate multiple words depending on whether you want files with both words or either word.  Type 'quit' to quit the program."


StopWords = open("stopwords.txt", "r")
for line in StopWords:
    StopList += line
TextFiles = glob.glob('*.txt')
AddFiles(TextFiles)


loop = True
while loop:
    Command = raw_input("Please enter search terms: ")
    CommandList = Command.split()
    for c in range(0,len(CommandList)):
        CommandList[c] = CommandList[c].lower()
        for i in CommandList:
            temporaryDict = set(SearchDictionary[i])
            if i == "and":
                newDict = temporaryDict.intersection(SearchDictionary[i])
                print newDict
                continue
            elif i == "or":
                newDict = set(temporaryDict).union(set(SearchDictionary[i]))
                print newDict
                continue
            else:
                newDict = SearchDictionary[i]
                print newDict
                continue
        if CommandList[c] == 'quit':
            print "Thank you for using my program."
            break