code: 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