3 # :Copyright: © 2016 Günter Milde.
4 # Released without warranty under the terms of the
5 # GNU General Public License (v. 2 or later)
7 # umformatierung.py: Wandlung zwischen Lang- und Kurzformat der Wortliste(n)
8 # ==========================================================================
12 Wandlung zwischen Lang- und Kurzformat der Wortliste(n)
14 Die Eingabedateien werden in eine Liste gelesen, gewandelt, sortiert
15 und in die Standardausgabe, eine oder mehrere Dateien geschrieben.
17 Das spezielle Argument '-' steht für die Standardeingabe::
19 umformatierung.py -k - < wortliste > wlst
21 umformatierung.py neu.todo wlst-* > wortliste
23 Mit der Option ``--split`` kann die Aufteilung in Einzeldateien erzwungen
26 umformatierung.py -k langeintraege --split -o kurz_
28 erzeugt die Dateien ``kurz_a`` bis ``kurz_z``.
33 import argparse
, sys
, os
, re
35 # path for local Python modules
36 sys
.path
.insert(0, os
.path
.join(os
.path
.dirname(__file__
), 'lib'))
38 from py_wortliste
.wortliste
import (filelines
, WordEntry
, ShortEntry
,
39 long2short
, short2long
, sortkey_duden
)
40 from py_wortliste
.split_wortliste
import split_a_z
, write_a_z
48 if __name__
== '__main__':
53 parser
= argparse
.ArgumentParser(description
=__doc__
,
54 formatter_class
=argparse
.RawDescriptionHelpFormatter
)
55 parser
.add_argument('INFILES', nargs
='*', default
=['-'],
56 help=u
'Eingabedatei(en), Default: "-" (Standardeingabe)')
57 parser
.add_argument('-k', '--long2short',
58 help=u
'vom Langformat in das Kurzformat wandeln.',
59 action
="store_true", default
=False)
60 parser
.add_argument('-o', '--outfile',
61 help=u
'Ausgangsdatei, Vorgabe: - (Standardausgabe)',
63 parser
.add_argument('-s', '--split',
64 help=u
'Aufteilen in Dateien "OUTFILEa" bis "OUTFILEz".'
65 u
'Vorgabe: False (nicht splitten)',
66 action
="store_true", default
=False)
67 parser
.add_argument('-e', '--explicit', action
='store_true', default
=False,
68 help=u
'Einträge nicht zusammenfassen.')
69 parser
.add_argument('-u', '--unsorted', action
='store_true', default
=False,
70 help=u
'Überspringe die Sortierung.')
72 args
= parser
.parse_args()
74 # Iterator über Eingabezeilen::
76 lines
= filelines(args
.INFILES
)
80 if args
.long2short
is True:
81 entries
= long2short(lines
, prune
=not(args
.explicit
))
83 entries
= short2long(lines
, prune
=not(args
.explicit
))
85 # Sortieren und Ausgeben::
87 lines
= (str(entry
)+'\n' for entry
in entries
)
89 if args
.split
is True:
90 lists
= split_a_z(lines
)
91 if args
.unsorted
is not True:
92 for l
in lists
.values():
93 l
.sort(key
=sortkey_duden
)
94 write_a_z(lists
, args
.outfile
)
96 if args
.unsorted
is not True:
97 entries
.sort(key
=sortkey_duden
)
99 if args
.outfile
== '-': # default
102 outfile
= open(args
.outfile
, 'w', encoding
='utf-8')
104 outfile
.writelines(lines
)