Refine the splitting of flat names into constituent parts. Fixes #769.
- Legacy-Id: 4065
This commit is contained in:
parent
e9864d7cc2
commit
794bbad413
|
@ -10,13 +10,22 @@ def name_parts(name):
|
|||
name = name_with_paren_match.group(1)
|
||||
|
||||
parts = name.split()
|
||||
if parts[0] in ["Mr", "Mr.", "Mrs", "Mrs.", "Ms", "Ms.", "Miss", "Dr.", "Doctor", "Prof", "Prof.", "Professor", "Sir", "Lady", "Dame"]:
|
||||
if len(parts) > 2 and parts[0] in ["M", "M.", "Sri", ] and "." not in parts[1]:
|
||||
prefix = parts[0];
|
||||
parts = parts[1:]
|
||||
if parts[0] in ["Mr", "Mr.", "Mrs", "Mrs.", "Ms", "Ms.", "Miss", "Dr.", "Doctor", "Prof", "Prof.", "Professor", "Sir", "Lady", "Dame", ]:
|
||||
prefix = parts[0];
|
||||
parts = parts[1:]
|
||||
if len(parts) > 2:
|
||||
if parts[-1] in ["Jr", "Jr.", "II", "2nd", "III", "3rd", "Ph.D."]:
|
||||
suffix = parts[-1]
|
||||
parts = parts[:-1]
|
||||
if len(parts) > 2:
|
||||
name = " ".join(parts)
|
||||
compound = re.search(" (de|hadi|van|ver|von|el|le|st\.?) ", name.lower())
|
||||
if compound:
|
||||
pos = compound.start()
|
||||
parts = name[:pos].split() + [name[pos+1:]]
|
||||
if len(parts) > 2:
|
||||
first = parts[0]
|
||||
last = parts[-1]
|
||||
|
|
Loading…
Reference in a new issue