-
Notifications
You must be signed in to change notification settings - Fork 1
/
parse.py
60 lines (49 loc) · 1.94 KB
/
parse.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import re
filename = "dice-pilot-12-1-13.results"
numQuestions = 40
fl=open(filename, 'r')
lines = fl.readlines()
fl.close()
processedlines = [line.split('\"\t\"') for line in lines]
processed = [[re.sub('[\n\"{}]', '', x) for x in line] for line in processedlines]
dict = {}
header = ['workerid', 'language', 'initialValue','die0numdots','die0color','die1numdots','die1color','die2numdots','die2color','die3numdots','die3color','numRed','numBlack','context','quantifier','number','qcolor','attentionCheck','requestedValue','rt','response']
def find_idx (string):
vals = [i for i,x in enumerate(processed[0]) if x == string]
if len(vals) == 0:
return -1
else:
return vals[0]
trialindices = []
for j in xrange(1, numQuestions + 1):
trialindices = trialindices + [k for k,x in enumerate(processed[0]) if x == 'Answer.q' + str(j)]
i=1
for subjectdata in processed[1:]:
language = subjectdata[find_idx('Answer.language')].replace(' ', '')
# if language == "":
# language = "English"
# modify for all the weird ways of saying "english" we get
subjname = "subject" + str(i)
dict[subjname] = {}
i += 1
for trialindex in trialindices:
trialdataraw = {}
keysAndValues = [x.split(":") for x in subjectdata[trialindex].split(",")]
for keyValuePair in keysAndValues:
trialdataraw[keyValuePair[0]] = keyValuePair[1]
tnum = int(processed[0][trialindex].replace('Answer.q', ''))
dict[subjname][tnum] = trialdataraw
dict[subjname][tnum]["language"] = language
dict[subjname][tnum]["workerid"] = subjectdata[find_idx("workerid")]
csv=""
for x in header:
csv = csv + x + ","
csv = csv[:-1] + "\n"
for subj in dict.keys():
for trial in dict[subj].keys():
for x in header:
csv += dict[subj][trial][x] + ","
csv = csv[:-1] + "\n"
parsed = open(filename + "-parsed.csv", 'w')
parsed.write(csv)
parsed.close()