【发布时间】:2018-02-14 07:00:34
【问题描述】:
我是文本挖掘的新手,我需要从 *.txt 文件中提取日期并对其进行排序。日期在句子之间(每行),它们的格式可能如下:
04/20/2009; 04/20/09; 4/20/09; 4/3/09
Mar-20-2009; Mar 20, 2009; March 20, 2009; Mar. 20, 2009; Mar 20 2009;
20 Mar 2009; 20 March 2009; 20 Mar. 2009; 20 March, 2009
Mar 20th, 2009; Mar 21st, 2009; Mar 22nd, 2009
Feb 2009; Sep 2009; Oct 2010
6/2008; 12/2009
2009; 2010
如果缺少这一天,请考虑 1 日,如果缺少月份,请考虑 1 月。
我的想法是提取所有日期并将其转换为 mm/dd/yyyy 格式。但是,我对如何查找和替换模式有点怀疑。这就是我所做的:
import pandas as pd
doc = []
with open('dates.txt') as file:
for line in file:
doc.append(line)
df = pd.Series(doc)
df2 = pd.DataFrame(df,columns=['text'])
def myfunc(x):
if len(x)==4:
x = '01/01/'+x
else:
if not re.search('/',x):
example = re.sub('[-]','/',x)
terms = re.split('/',x)
if (len(terms)==2):
if len(terms[-1])==2:
x = '01/'+terms[0]+'/19'+terms[-1]
else:
x = '01/'+terms[0]+'/'+terms[-1]
elif len(terms[-1])==2:
x = terms[0].zfill(2)+'/'+terms[1].zfill(2)+'/19'+terms[-1]
return x
df2['text'] = df2.text.str.replace(r'(((?:\d+[/-])?\d+[/-]\d+)|\d{4})', lambda x: myfunc(x.groups('Date')[0]))
我只为数字日期格式做了它。但我有点困惑如何使用字母数字日期。
我知道这是一个粗略的代码,但这正是我得到的。
【问题讨论】:
标签: python pandas date dataframe text-mining