【问题标题】:replacing Date in String with some text in python?用python中的一些文本替换字符串中的日期?
【发布时间】:2018-12-03 07:38:02
【问题描述】:

我有类似的文字

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)

但是如何获得我的输出是我的问题。

【问题讨论】:

  • 你必须为find_dates 发布你的代码,但我想你在那里使用正则表达式。如果是这样,只需使用re.sub 而不是match 就可以了。
  • find_dates 是 datefinder 库中的一个方法。你能告诉我你在说什么吗

标签: python string python-3.x datetime


【解决方案1】:

日期查找器非常适合从文本中解析日期,但您可以省略库而只使用正则表达式(如果日期始终采用所示格式)。

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)

请注意,此解决方案仍使用该包,但实际上并没有按照您的预期进行。它也可以找到数字序列并替换它们。
我会强烈建议您构建自己的正则表达式来完全满足您的需求。

【讨论】:

  • 嘿,它没有涵盖我所有的情况,如果输入字符串是 'CIwr UNdfdIadfdN ghw dfsdfdsfsT dgsggafqfe NO 9561364454 DATED 03-JULY-2018' 它不会返回任何日期。所以我的日期不会每次都采用相同的格式。我想从字符串中提取任何日期作为日期查找器返回
  • 我会提取 datefinder 包并检查我们如何使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-04
  • 2015-08-16
  • 2020-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多