Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv
- import os
- import sys
- question_list = set() # using a set to have a unique list of questions
- working_dir = os.getcwd()
- def find_files():
- file_list = []
- for file in os.listdir(working_dir):
- if file.endswith(".csv"):
- file_list.append(os.path.join(working_dir, file))
- return file_list
- def strip_whitspaces_in_list(l):
- return [x.strip() for x in l]
- def create_dict(csvfile):
- with open(csvfile) as csvdata:
- data = csv.reader(csvdata, delimiter=';')
- header = next(data)
- questions = header[1:]
- questions = strip_whitspaces_in_list(questions) #remove the silly whitespaces
- question_list.update(questions) # update the questions to the set
- for answers in data:
- user = answers[0].strip()
- answers = answers[1:]
- answers = strip_whitspaces_in_list(answers)
- questions_answer_dict = dict(zip(questions, answers))
- yield {user: questions_answer_dict}
- def make_list():
- ret = []
- for csvfile in find_files():
- for data in create_dict(csvfile):
- ret.append(data)
- return ret
- def generate_header():
- return ['User'] + list(question_list)
- def gen_2d_list():
- data = make_list() #order is here importand, first get data to create question_list
- header = generate_header()
- ret = []
- for dataset in data:
- row = []
- for user, qa in dataset.items():
- row.append(user)
- for question in question_list:
- answer = qa.get(question, None)
- row.append(answer)
- ret.append(row)
- return [header] + ret
- def writecsv(output='test.csv'):
- data = gen_2d_list()
- with open(output, 'w') as fd:
- writer = csv.writer(fd, delimiter=';')
- writer.writerows(data)
- def main():
- try:
- writecsv()
- except:
- return -1
- return 0
- if __name__ == '__main__':
- sys.exit(main())
Add Comment
Please, Sign In to add comment