Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv
- def filter(file_name, **kwargs):
- list_of_dictionaries = []
- result=[]
- list_with_results = []
- f = open(file_name, 'rt')
- try:
- reader = csv.DictReader(f)
- for row in reader:
- list_of_dictionaries.append(row)
- add = True
- #print(list_of_dictionaries)
- for element in list_of_dictionaries:
- for key, value in kwargs.items():
- if key in element:
- if element[key] == value:
- continue
- else:
- add = False
- elif key == 'full_name_startswith':
- if element['full_name'].split(' ')[0] == value:
- continue
- else:
- add = False
- elif key == 'email__contains':
- first, second = element['email'].split('@')
- value = value[1:]
- second = second[:len(second) - 4]
- if second == value:
- continue
- else:
- add = False
- elif key == 'salary_gt':
- if int(element['salary']) > value:
- continue
- else:
- add = False
- elif key == 'salary_lt':
- if int(element['salary']) < value:
- continue
- else:
- add = False
- else:
- pass
- if add:
- result.append(element)
- else:
- add = True
- if 'order_by' in kwargs.keys():
- print(kwargs['order_by'])
- result = sorted(result, key=lambda k: k[kwargs['order_by']])
- for element in result:
- elements = [val for val in element.values()]
- list_with_results.append(elements)
- return list_with_results
- finally:
- f.close()
- #print(filter('example_data.csv',full_name="Diana Harris"))
- print(filter('example_data.csv',full_name__starswith="Michael",favourite_color="purple"))
- print(filter('example_data.csv',full_name__starswith="Michael",order_by='salary'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement