fix: инициалы ФИО не теряли отчество
- get_short_fio/get_initials: 'Черник В.Н.' превращалось в 'Черник В.'
(терялся инициал отчества) — добавлена функция _initial, которая
сохраняет уже сокращённые инициалы ('В.Н.') как есть
This commit is contained in:
+15
-4
@@ -196,15 +196,26 @@ def _is_quoted(word: str) -> bool:
|
||||
|
||||
# ==================== ФОРМАТИРОВАНИЕ ФИО ====================
|
||||
|
||||
def _initial(word: str) -> str:
|
||||
"""Инициал из слова: если уже с точкой — вернуть как есть,
|
||||
иначе первая буква + точка. «В.Н.» → «В.Н.», «Владимир» → «В.»"""
|
||||
w = word.strip()
|
||||
if not w:
|
||||
return ''
|
||||
if w.endswith('.'):
|
||||
return w
|
||||
return w[0] + '.'
|
||||
|
||||
|
||||
def get_short_fio(fio: str) -> str:
|
||||
"""Фамилия И.О."""
|
||||
if not fio:
|
||||
return ""
|
||||
parts = fio.split()
|
||||
if len(parts) >= 2:
|
||||
initials = parts[1][0] + "."
|
||||
initials = _initial(parts[1])
|
||||
if len(parts) >= 3:
|
||||
initials += parts[2][0] + "."
|
||||
initials += _initial(parts[2])
|
||||
return parts[0] + " " + initials
|
||||
return fio
|
||||
|
||||
@@ -215,8 +226,8 @@ def get_initials(fio: str) -> str:
|
||||
return ""
|
||||
parts = fio.split()
|
||||
if len(parts) >= 2:
|
||||
initials = parts[1][0] + "."
|
||||
initials = _initial(parts[1])
|
||||
if len(parts) >= 3:
|
||||
initials += parts[2][0] + "."
|
||||
initials += _initial(parts[2])
|
||||
return initials + " " + parts[0]
|
||||
return fio
|
||||
|
||||
Reference in New Issue
Block a user