как прочитать и записать только дату в текстовом файле, если дата находится в конце строки
Вопрос по сути следующий, есть задача парсинга входящих писем в виде текстовых файлов на предмет даты их написания, и организаций написавших мне это письмо, есть программа которая позволяет читать только строки, соответственно выводит кроме даты в новый созданный файл всю строку с датой, подскажите как это поправить
name: str = input ("Введите имя входящего файла")
f = open (name, "r") # открываем файл
lines = f.readlines () # читаем его построчно
t: str = lines [23] # выводим строки
t1: str = lines [24] # выводим строки
#print(t, t1)
name1: str = input ("Введите имя исходящего файла")
f = open(name1, "w+")
f.write(str(t))
f.write(str(t1))
f.close()
В идеале нужно даже немного больше, хотелось бы находить конкретные места написания даты в документе, т.е. сейчас если дата будет написана не в 25 строке то её естественно программка не найдёт.

Ответы (2 шт):
Для того, чтобы вытащить дату, то циклом пройдись по всем строкам и с помощью простого регулярного выражения найди дату.
import re
# шаблон регулярного выражения
# даты формата dd.mm.yyyy или dd/mm/yyyy или dd\mm\yyyy
# Год от 2000 до 2021
date_re = r'[0123]?\d[./\\][01]?\d[./\\]20[012][01]'
# открываем файл
name: str = input ("Введите имя входящего файла")
f = open (name, "r")
lines = f.readlines()
# В эту переменную сохранится найденная дата
date_str = ''
for line in lines:
# поиск шаблона в строке
re_result = re.search(date_re, line)
# если нашли
if re_result:
# сохраняем в переменную и завершаем цикл поиска
date_str = re_result.group(0)
break
Примерно, так.
Если все документы имеют нужные вам данные на 1 и последней строке, просто берите их от туда
name: str = input ("Введите имя входящего файла: ")
f = open (name, "r") # открываем файл
lines = f.readlines() # читаем его построчно
t1 = lines[0]
t2 = lines[-1]
name1: str = input ("Введите имя исходящего файла: ")
f = open(name1, "w+")
f.write(str(t1 + "\n" + t2))
f.close()
Ну или можете использовать регулярные выражения, как уже написали ниже.