我正在处理大量文本字符串,尝试匹配日期时间并使用 strptime(( 函数将它们转换为 MM-DD-YYYY 格式。
但是,文本中出现了一些 5 位数的序列号(例如 90481(,误导了我的 .findall(( 函数将它们视为日期时间。如何通过包含 ^(( 类型的条件来排除它们来避免它们?
它们的共同点是它们都是 5 位数,所以我试过^(?!\d{5}(,但结果并不好。解决这组数字的最佳方法是什么?
谢谢。
注意1:我已经阅读了这篇文章,但似乎无法理解。
注意2:关于日期格式,有人在评论部分询问过
我正在处理的数据框中有许多日期格式,例如:
05/10/2001; 05/10/01; 5/10/09; 6/2/01
May-10-2001; May 10, 2010; March 25, 2001; Mar. 25, 2001; Mar 25 2001;
25 Mar 2001; 25 March 2001; 25 Mar. 2001; 25 March, 2001
Mar 25th, 2001; Mar 25th, 2001; Mar 12nd, 2001
Feb 2001; Sep 2001; Oct 2001
5/2001; 11/2001
2001; 2015
所以我有一个相当长的.findall(r''(函数,但重点是避免选择那些5位数的序列号。
真诚地
您可以在正则表达式中使用b
,以避免在具有更多数字的数字中发现匹配项。将一个放在开头,一个放在末尾,并通过将其余部分包装在非捕获组中来确保它们不包含在|
(OR( 操作的范围内。
我删除了一些月份以保持简短:
b(?:d{1,2}/d{1,2}/d{2,4}|(?:Jan|Feb|Mar|Apr| |Nov|Dec)[a-z]*-d{2}-d{2,4})b