From e83ee3183296ff5671ad2034a8dbeed6a489a3be Mon Sep 17 00:00:00 2001 From: andrew Date: Mon, 11 Nov 2019 19:08:06 -0800 Subject: [PATCH] run the parsing of pieces for post-comma parts prior to checking if all post-comma elements are suffixes. this ensures that suffixes are properly captured in the constants prior to the all-suffix check --- nameparser/parser.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/nameparser/parser.py b/nameparser/parser.py index a2dfa8a..5a64af3 100644 --- a/nameparser/parser.py +++ b/nameparser/parser.py @@ -528,6 +528,9 @@ def parse_full_name(self): # in the first part. (Suffixes will never appear after last names # only, and allows potential first names to be in suffixes, e.g. # "Johnson, Bart" + + post_comma_pieces = self.parse_pieces(parts[1].split(' '), 1) + if self.are_suffixes(parts[1].split(' ')) \ and len(parts[0].split(' ')) > 1: @@ -566,9 +569,8 @@ def parse_full_name(self): # lastname comma: # last [suffix], title first middles[,] suffix [,suffix] # parts[0], parts[1], parts[2:...] - pieces = self.parse_pieces(parts[1].split(' '), 1) - log.debug("pieces: %s", u(pieces)) + log.debug("post-comma pieces: %s", u(post_comma_pieces)) # lastname part may have suffixes in it lastname_pieces = self.parse_pieces(parts[0].split(' '), 1) @@ -580,14 +582,14 @@ def parse_full_name(self): else: self.last_list.append(piece) - for i, piece in enumerate(pieces): + for i, piece in enumerate(post_comma_pieces): try: - nxt = pieces[i + 1] + nxt = post_comma_pieces[i + 1] except IndexError: nxt = None if self.is_title(piece) \ - and (nxt or len(pieces) == 1) \ + and (nxt or len(post_comma_pieces) == 1) \ and not self.first: self.title_list.append(piece) continue