def get_name(vf_col, ocdid, districts, state): full_name = '' small = ['IN', 'NJ', 'NM', 'OK'] ocdid_split = ocdid.split('/') suffix = ocdid_split[-1] specific_suffix = suffix.split(':')[-1].upper() if re.match(r'[0-9]+', specific_suffix): specific_suffix = add_zeros(specific_suffix) possible_names = districts[vf_col] if which_level(vf_col) == 'high': full_name = get_high_level(vf_col, ocdid, districts) else: if vf_col == 'vf_county_council': if state in small and re.match(r'[0-9]+', specific_suffix): specific_suffix = specific_suffix[1:] county_ocdid = ocdid.split('/council_district')[0] county = get_high_level('vf_county_name', county_ocdid, districts) for p in possible_names: if specific_suffix == p: index = possible_names.index(specific_suffix) full_name = '{}_{}'.format(county, possible_names[index]) elif county in p and len(county) > 2: if ocdid.split(':')[-1] in p: full_name = '{}_{}'.format(county, specific_suffix) elif vf_col == 'vf_judicial_district': # print ocdid # print possible_names pass # print 'FULL NAME: {}'.format(full_name) return full_name
def get_high_level(vf_col, ocdid, districts): # Reads in all possible districts as ripped from the VF possible_names = districts[vf_col] # Pull most specific section of the ocdid & clean up suffix = ocdid.split('/')[-1] specific_suffix = suffix.split(':')[-1].upper().replace('_', ' ').replace('~', '') if re.match(r'[0-9]+', specific_suffix): specific_suffix = add_zeros(specific_suffix) if 'state:md' in ocdid: specific_suffix = se.md_ts_exceptions(specific_suffix, ocdid) # Check for state exception cases if 'state:nh' in ocdid: if vf_col == 'vf_hd': return se.nh_ts_exceptions(specific_suffix, possible_names) elif 'state:ma' in ocdid: if vf_col == 'vf_hd' or vf_col == 'vf_sd': return se.ma_ts_exceptions(specific_suffix, possible_names) elif 'state:vt' in ocdid: if vf_col == 'vf_hd' or 'GRAND ISLE' in specific_suffix: return se.vt_ts_exceptions(vf_col, specific_suffix, possible_names) elif 'state:va' in ocdid and 'place:' in ocdid: return se.va_ts_exceptions(specific_suffix, possible_names, vf_col) # Match to possible districts if there are no exceptions if specific_suffix in possible_names: return no_spaces(possible_names[possible_names.index(specific_suffix)]) else: for p in possible_names: if fuzz.ratio(specific_suffix, p) >= 90: return no_spaces(possible_names[possible_names.index(p)]) elif fuzz.partial_ratio(specific_suffix, p) >= 90: return no_spaces(possible_names[possible_names.index(p)]) else: return ''