заменить дату в строке с каким-то текстом в Python? - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть текст, такой как

input_string = " - 01 APRIL 2018 - ING000038985695286069"

Я хочу заменить дату в строке на текст, такой как DD или DATE

output_string = "- DD/DATE - ING000038985695286069"

Пока я могу извлечь дату изстрока, использующая

import datefinder
matches = list(datefinder.find_dates(input_string))
if len(matches) > 0:
    date = matches[0]
    print(date)

Но как получить мой вывод - это мой вопрос.

1 Ответ

0 голосов
/ 03 декабря 2018

Datefinder хорош для анализа дат из текста, но вы можете опустить библиотеку и просто использовать регулярные выражения (, если даты всегда в указанном формате).

import re

result = re.sub('\s(\d*\s\w*\s\d*)\s', ' DATE ', input_string)

Распределение регулярных выражений:

  • \s соответствует пробелу
  • ( начать захват текста
  • \d* соответствует любой цифре столько, сколькомаксимально возможное количество раз
  • \s соответствует ровно одному пробелу
  • \w* соответствует максимально возможному количеству слов (фактически также соответствует числам)
  • \s снова одинпробел
  • \d* снова столько цифр, сколько возможно
  • ) захват конца
  • \s соответствует одному пробелу

ОБНОВЛЕНИЕ
Пакет datefinder можно использовать для поиска всех дат следующим образом:

dates_regex = datefinder.DateFinder().DATE_REGEX
dates_regex.sub('DATE ', input_string)

Обратите внимание, что это решение все еще использует пакет, но на самом деле не выполняет то, что выожидать этого.Он находит последовательности чисел и заменяет их тоже.
Я бы настоятельно предложил бы вам создать собственное регулярное выражение, чтобы точно удовлетворить ваши потребности.

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