In [5]:
import re
opt_pattern_format = "({})?"
row_pattern_mic_multpergroup = r"""^(?P<multpergroup>[ GMP])"""
row_pattern_mic_level_names = r"""\s+(?P<level>\d)\s(?P<shortname>\S{2})\s+(?P<longname>\S+)"""
row_pattern_mic_typelength = r"""\s+(?P<type>[ABCDFILNPT])\s+(?P<length>\d+)"""
row_pattern_mic_scale = """\.(?P<scale>\d)"""
row_pattern_mic_null = r"""\s{2}(?P<null>[ NF])"""
row_pattern_mic_descsub = r"""\s(?P<descsub>[DS])"""
row_pattern_mic_header = r"""\s+HD=(?P<header>\S+)"""
row_pattern_mic_editmask = r"""\s+EM=(?P<editmask>\S+)"""
In [6]:
row_pattern_mic_ddm = re.compile(row_pattern_mic_multpergroup +
row_pattern_mic_level_names +
opt_pattern_format.format(row_pattern_mic_typelength) +
opt_pattern_format.format(row_pattern_mic_scale) +
opt_pattern_format.format(row_pattern_mic_null) +
opt_pattern_format.format(row_pattern_mic_descsub) +
opt_pattern_format.format(row_pattern_mic_header) +
opt_pattern_format.format(row_pattern_mic_editmask))
In [7]:
line = ' 1 AA PERSONNEL-ID A 8.2 D HD=PERSONNEL/ID'
#line = ' 1 AH BIRTH D 6 D HD=DATE/OF/BIRTH EM=YYYY-MM-DD'
line = 'G 1 A1 FULL-ADDRESS'
In [8]:
match = row_pattern_mic_ddm.match(line)
match.groupdict()
Out[8]:
In [ ]: