Example #1
0
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
Example #2
0
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 ''