63 FOUT.write("\n\n") |
63 FOUT.write("\n\n") |
64 FOUT.write(PRELUDE.about) |
64 FOUT.write(PRELUDE.about) |
65 FOUT.write("\n") |
65 FOUT.write("\n") |
66 |
66 |
67 |
67 |
68 def attr_key(item): |
68 for (headwords, translations) in DOM[1:]: |
69 (word, (pron, attrs)) = item |
|
70 if not attrs: |
|
71 return "zzz" |
|
72 best_vattr = None |
|
73 for attr in attrs: |
|
74 if attr in ["v1", "v2", "v3"]: |
|
75 if not best_vattr or (best_vattr and best_vattr > attr): |
|
76 best_vattr = attr |
|
77 if best_vattr: |
|
78 return best_vattr |
|
79 for attr in attrs: # single/plural |
|
80 if attr in ["s"]: |
|
81 return attr |
|
82 for attr in attrs: # comparative/superlative |
|
83 if attr in ["comp"]: |
|
84 return attr |
|
85 for attr in attrs: # Am/Br/Au |
|
86 if attr in ["Am"]: |
|
87 return attr |
|
88 return "zzz" |
|
89 |
|
90 |
|
91 for idx in range(1, len(DOM)): |
|
92 article = DOM[idx] |
|
93 FOUT.write("_____\n\n") |
69 FOUT.write("_____\n\n") |
94 title = "; ".join(article[0].keys()) |
70 title = "; ".join([h.headword for h in headwords]) |
95 FOUT.write(title) |
71 FOUT.write(title) |
96 FOUT.write("\n\n") |
72 FOUT.write("\n\n") |
97 defs = article[0].items() |
73 for hw in headwords: |
98 defs = sorted(defs, key = attr_key) |
|
99 for (word, (pron, attrs)) in defs: |
|
100 FOUT.write(" ") |
74 FOUT.write(" ") |
101 FOUT.write(word) |
75 FOUT.write(hw.headword) |
102 if pron is not None: |
76 if hw.pron is not None: |
103 FOUT.write(" [") |
77 FOUT.write(" [") |
104 FOUT.write(pron) |
78 FOUT.write(hw.pron) |
105 FOUT.write("]") |
79 FOUT.write("]") |
106 if len(attrs) > 0: |
80 if len(hw.attrs) > 0: |
107 FOUT.write(" ") |
81 FOUT.write(" ") |
108 l = ["«"+x+"»" for x in attrs] |
82 l = ["«"+x+"»" for x in hw.attrs] |
109 l.sort() |
83 l.sort() |
110 FOUT.write(", ".join(l)) |
84 FOUT.write(", ".join(l)) |
111 FOUT.write("\n") |
85 FOUT.write("\n") |
112 FOUT.write("\n") |
86 FOUT.write("\n") |
113 for sense in article[1]: |
87 for sense in translations: |
114 if not sense: |
88 if not sense: |
115 raise Exception("""Empty sense for article: """ + article[0].__iter__().__next__()) |
89 raise Exception("""Empty sense for article: """ + headwords.__iter__().__next__()) |
116 FOUT.write(" ") |
90 FOUT.write(" ") |
117 if sense.pos: |
91 if sense.pos: |
118 FOUT.write("«") |
92 FOUT.write("«") |
119 FOUT.write(sense.pos) |
93 FOUT.write(sense.pos) |
120 FOUT.write("» ") |
94 FOUT.write("» ") |