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:
|
def get_short_fio(fio: str) -> str:
|
||||||
"""Фамилия И.О."""
|
"""Фамилия И.О."""
|
||||||
if not fio:
|
if not fio:
|
||||||
return ""
|
return ""
|
||||||
parts = fio.split()
|
parts = fio.split()
|
||||||
if len(parts) >= 2:
|
if len(parts) >= 2:
|
||||||
initials = parts[1][0] + "."
|
initials = _initial(parts[1])
|
||||||
if len(parts) >= 3:
|
if len(parts) >= 3:
|
||||||
initials += parts[2][0] + "."
|
initials += _initial(parts[2])
|
||||||
return parts[0] + " " + initials
|
return parts[0] + " " + initials
|
||||||
return fio
|
return fio
|
||||||
|
|
||||||
@@ -215,8 +226,8 @@ def get_initials(fio: str) -> str:
|
|||||||
return ""
|
return ""
|
||||||
parts = fio.split()
|
parts = fio.split()
|
||||||
if len(parts) >= 2:
|
if len(parts) >= 2:
|
||||||
initials = parts[1][0] + "."
|
initials = _initial(parts[1])
|
||||||
if len(parts) >= 3:
|
if len(parts) >= 3:
|
||||||
initials += parts[2][0] + "."
|
initials += _initial(parts[2])
|
||||||
return initials + " " + parts[0]
|
return initials + " " + parts[0]
|
||||||
return fio
|
return fio
|
||||||
|
|||||||
Reference in New Issue
Block a user