Мои форматы ввода в разных строках повествовательного текста:
Код: Выделить всё
1) YYYY, e.g. 1890
2) MM.YYYY, e.g. 10.1765
3) M.YYYY, e.g. 9.1700
4) DD.MM.YYYY, e.g. 11.11.1876
5) D.MM.YYYY, e.g. 9.10.1678
6) D.M.YYYY, e.g. 9.1.1768
7) DD.M.YYYY, e.g. 21.3.1789
8) DD.MM., e.g. 12.12. (no year)
9) D.M., e.g. 1.1. (no year)
Код: Выделить всё
"7.1.1695 jur. geprüft"
"12.1. verteidigt unter v. Haaren"
"ord. [Weihe] Mainz 21.9.1743"
"erhielt 1786 die Pfarrei Irmstraut (Diöz. Trier)"
"ein Anton Alperstätt 20.9. 1748 bacc."
п>
Код: Выделить всё
def replace_dates(merged_lines):
def format_date(search):
year = ""
month = ""
day = ""
# check how many groups are in the pattern
num_groups = search.groups()
print(num_groups)
if len(num_groups) == 0:
year = "0000"
if len(num_groups) == 1:
year = search.group(0)
print(year)
elif 2 < len(num_groups)
[list]
[*]Случаи, когда указывается только год присутствует, почему-то игнорируется.
[*]Случаи, когда в моих данных есть временные диапазоны, например «1786-1790» извлекаются как ('17', None, '86', '-', '1790').
[/list]
Если больше чем одна дата в каждой строке, я бы с радостью обработал только первую, чтобы все было проще. Я также подумывал отказаться от идеи одного регулярного выражения и обрабатывать каждый случай отдельно, но боюсь, что это сделает сценарий излишне сложным.
Подробнее здесь: [url]https://stackoverflow.com/questions/78369157/regex-pattern-for-different-date-formats-does-not-seem-to-capture-all-desired-ca[/url]