читать текстовое поле в Python, используя регулярные выражения - PullRequest
1 голос
/ 15 марта 2010

У меня есть текстовый файл, как

FILED AS OF DATE:       20090209
DATE AS OF CHANGE:      20090209

Мне нужно найти позицию, используя FILED AS OF DATE: и прочитать дату. Я знаю, как это сделать, используя строки Python. Но использование регулярного выражения кажется круче:)

Кстати, как разобрать дату?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 15 марта 2010
#!/usr/bin/env python
import datetime, fileinput, re

for line in fileinput.input():
    if 'FILED AS OF DATE' in line:
       line = line.rstrip()
       dt = datetime.datetime.strptime(line, 'FILED AS OF DATE:       %Y%m%d')

       # or with regex
       date_str, = re.findall(r'\d+', line)
       dt = datetime.datetime.strptime(date_str, '%Y%m%d')

       print dt.date()

Пример:

$ ./finddate.py input.txt

Выход:

2009-02-09
1 голос
/ 15 марта 2010

Вам действительно не нужно использовать RE для этого.

Что касается даты разбора, вы можете использовать datetime.strptime (date_string, format) . Затем вы можете преобразовать его из datetime.datetime в datetime.date при необходимости.

В качестве альтернативы используйте python-dateutil parse () функцию , что очень удобно, когда формат значения даты (времени) не фиксирован.

1 голос
/ 15 марта 2010

Это то, что вам нужно?

/FILED.*([0-9]{4})([0-9]{2})([0-9]{2})$/

Поиск FILED, затем что-нибудь, затем разбирает дату, разделенную на 3 группы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...