def _split_refextract_authors_str(authors_str):
    author_seq = (x.strip() for x in RE_SPLIT_AUTH.split(authors_str) if x)
    res = []
    current = ''
    for author in author_seq:
        if not isinstance(author, six.text_type):
            author = six.text_type(author.decode('utf8', 'ignore'))
        author = re.sub(r'\(|\)', '', author, re.U)
        author = re.sub(r'^[\W\d]+', '', author, re.U)
        author = re.sub(r'[^.\w]+$', '', author, re.U)
        if RE_INITIALS_ONLY.match(author):
            current += ', ' + author.strip().replace('. ', '.')
        else:
            if current:
                res.append(current)
            current = author
    if current:
        res.append(current)
    filters = [
        lambda a: a == 'ed',
        lambda a: a.startswith(','),
        lambda a: len(a) == 1
    ]
    res = [r for r in res if all(not f(r) for f in filters)]
    return res