Шаблон регулярного выражения для разных форматов дат, похоже, не охватывает все желаемые случаи.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Шаблон регулярного выражения для разных форматов дат, похоже, не охватывает все желаемые случаи.

Сообщение Anonymous »

Я пытаюсь обработать построчно текстовый файл, чтобы найти информацию о дате в разных шаблонах и записать ее в единый формат ГГГГ, ГГГГ-ММ и ГГГГ-ММ-ДД.
Мои форматы ввода в разных строках повествовательного текста:

Код: Выделить всё

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]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»