2 # :Copyright: © 2014 Günter Milde.
3 # Released without warranty under the terms of the
4 # GNU General Public License (v. 2 or later)
7 # split_wortliste.py: Helfer für kleine Editieraufgaben
8 # ===================================================
12 Aufteilen einer Wortliste-Datei.
17 import argparse
, sys
, os
, re
, unicodedata
19 # append path to the "edit_tools" package
20 sys
.path
.append(os
.path
.dirname(os
.path
.dirname(__file__
)))
22 from edit_tools
.wortliste
import sortkey_duden
, umschrift_skey
, WordFile
25 # Gib den ersten Buchstaben einer Zeile (normalisiert auf a-z) zurück
27 # >>> from split_wortliste import startletter
28 # >>> startletter('Öfen')
30 # >>> startletter('-*-;ſoff')
35 def startletter(line
):
37 match
= re
.search('[a-zäöüßæœſA-ZÄÖÜÆÅØ]', line
)
40 sl
= match
.group(0).lower()
41 sl
= sl
.translate(umschrift_skey
)
42 sl
= unicodedata
.normalize('NFKD', sl
)
43 return sl
.encode('ascii', 'ignore').decode('utf8')
45 # Erzeuge ein Dictionary mit leeren Listen für die Buchstabne a bis z
47 # >>> from split_wortliste import make_az_lists
48 # >>> lists = make_az_lists()
56 for i
in range(ord('a'), ord('z')+1):
63 # Sortiere eine Liste von Zeilen je nach Anfangsbuchstaben in
64 # Einzellisten. Gib ein Dictionary mit den Listen zurück. ::
68 lists
= make_az_lists()
72 lists
[startletter(line
)].append(line
)
74 # print(line, startletter(line))
78 # Sortiere eine Liste von Zeilen je nach Anfangsbuchstaben in
79 # Einzeldateien. Das Argument ``destination`` wird um die Endungen
80 # ``a`` … ``z`` ergänzt::
82 def write_a_z(lists
, destination
):
83 for ch
, lines
in lists
.items():
84 print(ch
, len(lines
), end
=' ')
87 outfile
= open(destination
+ch
, 'w')
88 outfile
.writelines(line
for line
in lines
)
93 if __name__
== '__main__':
98 usage
= '%(prog)s [Optionen] destination\n' + __doc__
100 parser
= argparse
.ArgumentParser(usage
=usage
)
101 parser
.add_argument('destination', help='Template für die Ausgangsdateien'
102 '(wird um "a"..."z" erweitert).')
103 parser
.add_argument('-i', '--wordfile',
104 help='Eingangsdatei, Vorgabe "../../../wortliste"',
105 default
='../../../wortliste')
106 parser
.add_argument('-s', '--sort',
107 help='Einträge sortieren (Dudensortierung).',
108 action
="store_true", default
=False)
110 args
= parser
.parse_args()
114 wordfile
= open(args
.wordfile
) # vorhandene Einträge
116 # Aufteilen und Schreiben::
118 lists
= split_a_z(wordfile
.readlines())
119 write_a_z(lists
, args
.destination
)