Как извлечь файл Data в python - PullRequest
0 голосов
/ 01 июня 2018

Я хотел извлечь дату из заданной строки на основе тега.

Моя строка -

DATE: 7/25/2017 DATE OPENED: 7/25/2017 RETURN DATE: 7/26/2017 
NUMBER: 201707250008754 RATE:  10.00

Я хочу что-то вроде этого - если я дам "ДАТА", он должен вернуть 7/25/2017 только

, если я дам "ВОЗВРАТ ДАТУ"«он должен вернуть 7/26/2017

, если я дам« НОМЕР », он должен вернуть 201707250008754 и т. д.

Как мы можем достичь этого в Python 2.7 (Примечание: даты и цифрывсегда случайны в строке "

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Используйте dict для сопоставления ключа (например, «ДАТА») с его значением.

import re
s = '''DATE: 7/25/2017 DATE OPENED: 7/25/2017 RETURN DATE: 7/26/2017 NUMBER: 201707250008754 RATE:  10.00'''

items = re.findall('\s*(.*?)\:\s*([0-9/.]*)',s)
#[('DATE', '7/25/2017'), ('DATE OPENED', '7/25/2017'), ('RETURN DATE', '7/26/2017'), ('NUMBER', '201707250008754'), ('RATE', '10.00')]

info = dict(items)
#{'DATE': '7/25/2017', 'DATE OPENED': '7/25/2017', 'RETURN DATE': '7/26/2017', 'NUMBER': '201707250008754', 'RATE': '10.00'}


for key in ['DATE', 'RETURN DATE', 'NUMBER']:
    print(info[key])
0 голосов
/ 01 июня 2018

Вы можете создать словарь из содержимого строки с помощью re:

import re
s = 'DATE: 7/25/2017 DATE OPENED: 7/25/2017 RETURN DATE: 7/26/2017 NUMBER: 201707250008754 RATE: 10.00'
results = re.findall('[a-zA-Z\s]+(?=:)|[\d/\.]+', s)
d = dict([re.sub('^\s+', '', results[i]), results[i+1]] for i in range(0, len(results), 2))
for i in ['DATE', 'RETURN DATE', 'NUMBER']:
   print(d[i])

Вывод:

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