免责声明:这是我的第一篇帖子。欢迎给我反馈,告诉我应该或不应该如何格式化此问题。谢谢!
我想从文本块中提取数据,通过捕获与日期格式后跟冒号匹配的任何内容来实现。我已成功使用正则表达式捕获信息,包括观察日期、冒号以及在下一个日期之前的句点之前跟随的任何文本。
例如:
1999-01-01: 观察到10只鸟。
我遇到的问题是,我的一些数据包含观测日期后跟随的观测数据中的站点名称和冒号。这个“站点名:数据”的子模式可能在以下块中出现零次或多次。观察日期后面的块。
例如:
1999-01-01: BS-001:观察到5只鸟。全部健康。BS-002:观察到5只鸟,其中一些健康状况不佳。
我应该使用什么模式来捕获日期格式和冒号之后的所有文本,包括潜在的站点名称、它们的冒号和相关数据,直到下一个观察日期之前的句点?
我目前使用以下模式按日期和观察提取简单的观测数据(不包含多个站点):
pattern = re.compile(r'(\d\d\d\d\-*\s*\&*\d+\-*\d*:[A-Za-z0-9\s\,\(\)\;\"\-]*\.*)')
上面的代码让我可以提取出以各种形式呈现的观测日期。由于观测数据可能是一个或多个句子,所以在模式中使用句点很棘手。
以下是我尝试搜索和分离的文本示例。每个新匹配项都应以观察日期开头,在下面的数据中应返回3个匹配项(2013-04-13:数据,2017-01-01:数据和2018-07-04:数据):
理想情况下,输出应如下所示:
2013-04-13: BS-440: 在春季池栖息地观察到10个卵块。观察员注意到AMJE的3个质地坚硬的卵块类似于3周大的AMMA卵块,但外面更“崎岖”(卵块中的膜和胚胎间距类似于AMJE)。BS-443:在春季池栖息地观察到3个卵块。由于光线不好,可能漏掉了一些卵块。Smith-019:在春季池栖息地观察到250个卵块。观察员仅搜索了和路(池的SW边缘)相邻的部分。许多AMJE卵块附着在草本植物上,难以相互区分。AMJE卵块计数是在搜索区域内的粗略估计。
2017-01-01: 观察到23个个体。没有发现卵块。
2018-07-04: BS-440: 所有个体都休息了一个漫长的周末,没有进行繁殖。