Hi, I am working on a python script to automate reporting. And I am working on creating a keyword search. For example, if I want to search for the word Tool in the value and see what keys are associated with that. So say the value I have to search is Tool World and I want to know what key is associated with Tool World I search Tool World and it comes up with several results like missing or not updating and catalog issue. I have the basic code for it figured out but I have created my own dictionary for it called mydict and put a few key and values in but I want my code to search the csv file that I am importing and then take the info I am getting from the search results and put it in its own text file. Also, I dont want to have to create the mydict line with the keywords I want to be able to type in a value like Tool and search through the csv file and then output the results to a text file. So I guess what I want to do is take the row 2 and row 3 from the csv file and output that to text file then from there create a keyword search and output the results to another text file.
import csv import json import sys from collections import defaultdict from collections import Counter class dictionary(): def __init__(self): self.dict = defaultdict(list) self.counted_dict = defaultdict(list) self.grouped_dict = defaultdict(list) self.other_dict = defaultdict(list) self.final_dict = defaultdict(list) self.total_dict = defaultdict(list) self.search_dict = defaultdict(list) mydict = defaultdict(list) def populate_dict(self, filename): with open (filename, 'rb') as f: reader = csv.reader(f) next(reader, None) for row in reader: self.dict[row[2]].append(row[3]) def total_counts(self): for key in self.dict.keys(): total = 0 b = Counter(self.dict[key]) for value in b: total += b[value] self.total_dict.update({key: str(total)}) def all_counts(self): data_count = Counter() for key in self.dict.keys(): self.counted_dict.update({key: Counter(self.dict[key])}) def grouped_counts(self): for key in self.dict.keys(): total = 0 c = Counter(self.dict[key]) for value in c: if c[value] >= 5: self.grouped_dict.update({value: key + ': ' + str(c[value])}) elif c[value] <= 4: total += c[value] self.other_dict.update({key: 'other: ' + str(total)}) self.final_dict = self.grouped_dict, self.other_dict, self.total_dict #mydict = {'Project Tool Issue': ['CPO Project Tool'], 'All catalogs missing or not updating': ['20/20 Design Tool']} def search(mydict, lookup): for key, value in mydict.iteritems(): for v in value: if lookup in v: #return key print key search(mydict, 'Tool') # def txt_output(self, filename): # a = filename.split('.') # self.txt_output = a + '.txt' # print a def json_output(self): with open ('scripttesting.txt', 'w') as text_file: json.dump(self.final_dict, text_file, sort_keys = True, indent = 4) _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor