从字符串中提取格式不一致的日期(日期解析,NLP)

2023-11-24

我有一个很大的文件列表,其中一些文件名中嵌入了日期。日期的格式不一致且通常不完整,例如“Aug06”、“Aug2006”、“August 2006”、“08-06”、“01-08-06”、“2006”、“011004”等。除此之外,某些文件名具有不相关的数字,看起来有点像日期,例如“20202010”。

简而言之,日期通常不完整,有时不存在,格式不一致,并且与其他信息一起嵌入到字符串中,例如“8 月报告.xls”。

是否有可用的 Perl 模块可以很好地从这样的字符串猜测日期?它不一定是 100% 正确,因为它将由人工手动验证,但我试图让事情对那个人来说尽可能简单,并且有数千个条目需要检查:)


Date::Parse 肯定会成为您答案的一部分 - 该位计算出随机格式化的类似日期的字符串并从中生成实际可用的日期。

你的问题的另一部分——文件名中的其余字符——很不寻常,你不太可能发现其他人已经为你打包了一个模块。

如果没有看到更多的示例数据,实际上只能猜测,但我首先要确定可能的或可能的“日期部分”候选者。

这是一个使用 Date::Parse 的令人讨厌的暴力示例(更聪明的方法是使用 regex-en 列表来尝试识别日期位 - 我很高兴燃烧 cpu 周期而不是想得那么难!)

!/usr/bin/perl
use strict;
use warnings;
use Date::Parse;

my @files=("Report Aug06.xls", "ReportAug2006", "Report 11th September 2006.xls", 
           "Annual Report-08-06", "End-of-month Report01-08-06.xls", "Report2006");

# assumption - longest likely date string is something like '11th September 2006' - 19 chars
# shortest is "2006" - 4 chars.
# brute force all strings from 19-4 chars long at the end of the filename (less extension)
# return the longest thing that Date::Parse recognises as a date



foreach my $file (@files){
  #chop extension if there is one
  $file=~s/\..*//;
  for my $len (-19..-4){
    my $string = substr($file, $len);
    my $time = str2time($string);
    print "$string is a date: $time = ",scalar(localtime($time)),"\n" if $time;
    last if $time;
    }
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从字符串中提取格式不一致的日期(日期解析,NLP) 的相关文章

随机推荐

  • C++ 数组删除运算符语法

    我做完之后说 Foo array new Foo N 我一直都是这样删除的 delete array 然而 有时我会这样看 delete N array 由于它似乎可以编译并工作 至少在 msvc2005 中 我想知道 正确的做法是什么 那
  • Spring + Hibernate:具有相同标识符值的不同对象已与会话关联

    在我使用 Spring 和 Hibernate 的应用程序中 我解析 CSV 文件并通过调用填充数据库handleRow 每次从 CSV 文件读取一条记录时 我的域模型 家族 有很多 子家族 亚科 有很多 轨迹 轨迹 属于 物种 Famil
  • Android:我可以一个接一个地显示多个对话框吗?有没有类似Dialog Z-Level 的东西?

    是否可以一个接一个地显示多个对话框 有没有类似Dialog Z Level 的东西 我正在使用 DialogFragment 用户在其中选择元素 当他确认他的选择时 它会保存到数据库并发送到服务器上 如果保存操作失败 我想通知用户 另一个对
  • 如何一起使用 Angular 1.3.4 和 Angular 2 [重复]

    这个问题在这里已经有答案了 我已经有一个基于 Angular 1 3 4 构建的应用程序 我想将其更改为 Angular 2 但模块明智 假设我的页面上有 5 个模块 我想将一个模块迁移到 Angular 2 其他模块应该像以前的 1 3
  • 将下拉菜单选择保存在 cookie 中?

    我已经看过这个帖子好几次了 但我根本无法让代码工作 我需要帮助让这个下拉菜单将其设置保存到 cookie 这样当用户再次访问该网站时 他们之前的选择就会被保留 落下
  • Snakemake:使用run指令时如何实现log指令?

    Snakemake 允许为每个规则创建日志log参数指定日志文件的名称 通过管道传输结果相对简单shell输出到此日志 但我无法找出记录输出的方法run输出 即 python 脚本 一种解决方法是将 python 代码保存在脚本中 然后从
  • 链接服务器性能和选项

    在工作中 我们有两台服务器 其中一台正在运行很多人使用的应用程序 该应用程序具有 SQL Server 2000 后端 我很长时间以来都可以自由地查询它 但无法向其中添加任何内容 例如存储过程或额外的表 这导致我们将第二个 SQL Serv
  • 为什么 std::reference_wrapper 在调用成员函数时不隐式转换为引用? [复制]

    这个问题在这里已经有答案了 我不明白为什么不能使用std reference wrapper像这样 include
  • 开发 iPhone 应用程序以在 iPad 上运行 - 自动设置 2x

    有没有一种方法可以以编程方式将 iPad 设置为在 iPhone 应用程序启动时以 2 倍的速度运行 但仍保持 iPhone 应用程序本机 我知道我可以为每个硬件平台创建 NIB 文件 但为了方便起见 我只是希望应用程序启动就像用户在 iP
  • Scheme 可以将列表扩展为参数吗?

    考虑到我有一个程序 plus x y 女巫正好需要两个参数 现在我还有一个列表 其中包含两个对象 例如 list 1 2 那么 如果有any将列表扩展为两个参数的神奇方法 我们有一个点概念版本 但是那个isn t我想要的是 我只是想扩展该列
  • 在 Eclipse 中打开 xml 文件时出现错误 [重复]

    这个问题在这里已经有答案了 在 Eclipse 中 当我打开具有相同数据的两个不同名称的 xml 文件 意味着 A 和 B 是 2 个 xml 文件 它们具有相同的数据 时 我在控制台中出现错误 我在控制台中收到以下错误 为什么会出现这个错
  • 如何将 buildapp 与 Quicklisp 结合使用

    我想使用 buildapp 来制作作为给出的curl lisp可执行文件example buildapp output lisp curl asdf path src clbuild systems load system drakma e
  • 自动发布回到 mvc 下拉列表中

    要求 我的视图页面上有一个下拉列表 显示供应商列表 从下拉列表中选择供应商后 页面将显示所选供应商的详细信息 默认情况下 我需要选择第一个供应商并显示其详细信息 我可以使用以下代码来完成此任务 问题 不知道如何实现自动回发 true在 MV
  • 我可以在一个 Web 应用程序中拥有两个 web.xml 文件吗?

    我可以拥有一个包含多个 web xml 文件的应用程序吗 并且两个应用程序可以有父子关系从而有两个web xml吗 对于低于 servlet 3 0 的版本 则不能 如果您使用的是 3 0 则有一个可能性 在 JSR 315 Java Se
  • Azure Powershell:获取服务的公共虚拟IP

    是否可以使用 powershell 获取 azure 服务的公共虚拟 IP VIP 一种方法是使用 Get AzureEndpoint 命令 Get AzureVM Name thevmname ServiceName theservice
  • 面向对象的c++ win32?

    我想创建自己的类来处理创建窗口和窗口过程 但我注意到窗口过程必须是静态的 我现在想知道是否可以使窗口过程面向对象 我读过一些关于面向对象窗口的教程 但它们总是使过程静态 那有什么用 任何有关如何解决此问题的链接或信息将不胜感激 thanks
  • 如何在数据库中存储图像的位置?

    我有一个颜色列表 其中包含我想要向特定用户显示的纹理 因此我需要加载特定用户拥有的颜色的图像 颜色的信息包含在 ObjecDTO 中 其中一个属性是其图像小路 我的问题是我应该如何在数据库中存储图像路径 是否有任何特殊规则 例如 由于数据库
  • Spring Batch“默认”上下文变量是什么?

    In the 春季批次步进范围文档 存在三个无法解释的 spring batch 上下文映射 jobParameters jobExecutionContext and stepExecutionContext Springsource示例
  • MVC 自定义路由中的多个级别

    我正在尝试构建自己的小cms 我创建了一个抽象 pageBase 类 由 Static Reviews Articles News 继承 每个都有自己的控制器方法 我的问题是我需要允许管理员定义他自己的自定义路径级别 例如 news loc
  • 从字符串中提取格式不一致的日期(日期解析,NLP)

    我有一个很大的文件列表 其中一些文件名中嵌入了日期 日期的格式不一致且通常不完整 例如 Aug06 Aug2006 August 2006 08 06 01 08 06 2006 011004 等 除此之外 某些文件名具有不相关的数字 看起