|
101 | 101 | # Regexp objects for reading headers |
102 | 102 | # Record line |
103 | 103 | _rx_record = re.compile(''.join( |
104 | | - ["(?P<record_name>[-\w]+)/?(?P<n_seg>\d*)[ \t]+", |
| 104 | + ["[ \t]*", |
| 105 | + "(?P<record_name>[-\w]+)/?(?P<n_seg>\d*)[ \t]+", |
105 | 106 | "(?P<n_sig>\d+)[ \t]*(?P<fs>\d*\.?\d*)/*(?P<counter_freq>-?\d*\.?\d*)", |
106 | 107 | "\(?(?P<base_counter>-?\d*\.?\d*)\)?[ \t]*(?P<sig_len>\d*)[ \t]*", |
107 | 108 | "(?P<base_time>\d{,2}:?\d{,2}:?\d{,2}\.?\d{,6})[ \t]*", |
|
110 | 111 |
|
111 | 112 | # Signal line |
112 | 113 | _rx_signal = re.compile(''.join( |
113 | | - ["(?P<file_name>~?[-\w]*\.?[\w]*)[ \t]+(?P<fmt>\d+)x?" |
| 114 | + ["[ \t]*", |
| 115 | + "(?P<file_name>~?[-\w]*\.?[\w]*)[ \t]+(?P<fmt>\d+)x?" |
114 | 116 | "(?P<samps_per_frame>\d*):?(?P<skew>\d*)\+?(?P<byte_offset>\d*)[ \t]*", |
115 | 117 | "(?P<adc_gain>-?\d*\.?\d*e?[\+-]?\d*)\(?(?P<baseline>-?\d*)\)?", |
116 | 118 | "/?(?P<units>[\w\^\-\?%\/]*)[ \t]*(?P<adc_res>\d*)[ \t]*", |
|
119 | 121 | ) |
120 | 122 |
|
121 | 123 | # Segment line |
122 | | -_rx_segment = re.compile('(?P<seg_name>[-\w]*~?)[ \t]+(?P<seg_len>\d+)') |
| 124 | +_rx_segment = re.compile('[ \t]*(?P<seg_name>[-\w]*~?)[ \t]+(?P<seg_len>\d+)') |
123 | 125 |
|
124 | 126 |
|
125 | 127 | class BaseHeaderMixin(object): |
@@ -879,11 +881,12 @@ def _parse_record_line(record_line): |
879 | 881 | record_fields = {} |
880 | 882 |
|
881 | 883 | # Read string fields from record line |
| 884 | + match = _rx_record.match(record_line) |
882 | 885 | (record_fields['record_name'], record_fields['n_seg'], |
883 | 886 | record_fields['n_sig'], record_fields['fs'], |
884 | 887 | record_fields['counter_freq'], record_fields['base_counter'], |
885 | 888 | record_fields['sig_len'], record_fields['base_time'], |
886 | | - record_fields['base_date']) = re.findall(_rx_record, record_line)[0] |
| 889 | + record_fields['base_date']) = match.groups() |
887 | 890 |
|
888 | 891 | for field in RECORD_SPECS.index: |
889 | 892 | # Replace empty strings with their read defaults (which are |
@@ -942,14 +945,15 @@ def _parse_signal_lines(signal_lines): |
942 | 945 |
|
943 | 946 | # Read string fields from signal line |
944 | 947 | for ch in range(n_sig): |
| 948 | + match = _rx_signal.match(signal_lines[ch]) |
945 | 949 | (signal_fields['file_name'][ch], signal_fields['fmt'][ch], |
946 | 950 | signal_fields['samps_per_frame'][ch], signal_fields['skew'][ch], |
947 | 951 | signal_fields['byte_offset'][ch], signal_fields['adc_gain'][ch], |
948 | 952 | signal_fields['baseline'][ch], signal_fields['units'][ch], |
949 | 953 | signal_fields['adc_res'][ch], signal_fields['adc_zero'][ch], |
950 | 954 | signal_fields['init_value'][ch], signal_fields['checksum'][ch], |
951 | 955 | signal_fields['block_size'][ch], |
952 | | - signal_fields['sig_name'][ch]) = _rx_signal.findall(signal_lines[ch])[0] |
| 956 | + signal_fields['sig_name'][ch]) = match.groups() |
953 | 957 |
|
954 | 958 | for field in SIGNAL_SPECS.index: |
955 | 959 | # Replace empty strings with their read defaults (which are mostly None) |
@@ -998,7 +1002,9 @@ def _read_segment_lines(segment_lines): |
998 | 1002 |
|
999 | 1003 | # Read string fields from signal line |
1000 | 1004 | for i in range(len(segment_lines)): |
1001 | | - (segment_fields['seg_name'][i], segment_fields['seg_len'][i]) = _rx_segment.findall(segment_lines[i])[0] |
| 1005 | + match = _rx_segment.match(segment_lines[i]) |
| 1006 | + (segment_fields['seg_name'][i], |
| 1007 | + segment_fields['seg_len'][i]) = match.groups() |
1002 | 1008 |
|
1003 | 1009 | # Typecast strings for numerical field |
1004 | 1010 | if field == 'seg_len': |
|
0 commit comments