DeaD_EyE

http://ix.io/oDq

Feb 26th, 2016
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.98 KB | None | 0 0
  1. import csv
  2. import os
  3. import sys
  4.  
  5.  
  6. question_list = set() # using a set to have a unique list of questions
  7. working_dir = os.getcwd()
  8.  
  9. def find_files():
  10.     file_list = []
  11.     for file in os.listdir(working_dir):
  12.         if file.endswith(".csv"):
  13.             file_list.append(os.path.join(working_dir, file))
  14.     return file_list
  15.  
  16. def strip_whitspaces_in_list(l):
  17.     return [x.strip() for x in l]
  18.  
  19.  
  20. def create_dict(csvfile):
  21.     with open(csvfile) as csvdata:
  22.         data = csv.reader(csvdata, delimiter=';')
  23.         header = next(data)
  24.         questions = header[1:]
  25.         questions = strip_whitspaces_in_list(questions) #remove the silly whitespaces
  26.         question_list.update(questions) # update the questions to the set
  27.         for answers in data:
  28.             user = answers[0].strip()
  29.             answers = answers[1:]
  30.             answers = strip_whitspaces_in_list(answers)
  31.             questions_answer_dict = dict(zip(questions, answers))
  32.             yield {user: questions_answer_dict}
  33.  
  34. def make_list():
  35.     ret = []
  36.     for csvfile in find_files():
  37.         for data in create_dict(csvfile):
  38.             ret.append(data)
  39.     return ret
  40.  
  41. def generate_header():
  42.     return ['User'] + list(question_list)
  43.  
  44. def gen_2d_list():
  45.     data = make_list() #order is here importand, first get data to create question_list
  46.     header = generate_header()
  47.     ret = []
  48.     for dataset in data:
  49.         row = []
  50.         for user, qa in dataset.items():
  51.             row.append(user)
  52.             for question in question_list:
  53.                 answer = qa.get(question, None)
  54.                 row.append(answer)
  55.         ret.append(row)
  56.     return [header] + ret
  57.  
  58. def writecsv(output='test.csv'):
  59.     data = gen_2d_list()
  60.     with open(output, 'w') as fd:
  61.         writer = csv.writer(fd, delimiter=';')
  62.         writer.writerows(data)
  63.  
  64. def main():
  65.     try:
  66.         writecsv()
  67.     except:
  68.         return -1
  69.     return 0
  70.  
  71. if __name__ == '__main__':
  72.     sys.exit(main())
Add Comment
Please, Sign In to add comment