2017-06-06 31 views
0

我有一系列字符串(荷兰语),其中包含DD-MM-YYYY格式的日期或DD月YYYY文本格式的日期。在这里看到一个示例选择:https://paste.ee/p/XZLha。我正在寻找一个能够从这些文本字符串中识别日期的Python(2.7)库。图书馆识别文本中的荷兰日期?

  • dateutil不能够正确地解析荷兰
  • dateparser无法解析模糊串 - 它只接受的日期和天数字符串。它可以处理荷兰日期。

我想获得有关可能解决方案的意见。我正在考虑剥离日期和使用dateparser的文本。

+0

你总是可以使用正则表达式/字符串匹配,并自己动手。 –

+0

这就是我正在考虑使用的(正则表达式+荷兰月份名称列表),如果我找不到合适的库来为我做。有很多不同的情况我需要考虑:/ – Jonakemon

回答

0

下面是使用正则表达式作为@Shiva推荐的示例。它可能需要一些改进,但概念是有的:

import re 

SOURCE_DATA_SAMPLE = """gedaan te Amsterdam, op 13-4-2010, door 
gedaan te Amsterdam, op 13 april 2010, door 
gedaan te Amsterdam, op 12 juni 2003, door 
gedaan te Amsterdam, op 12 juni 2002, door 
Aldus gedaan op 24 oktober 2003 door 
Aldus gedaan op 5 december 2003 door 
Aldus gedaan op 5 december 2003 door 
Aldus gedaan op 8 april 2004 door 
Aldus gedaan op 16 april 2004 door 
Aldus gedaan op 23 april 2004 door 
Aldus gedaan op 10 september 2004 door 
Aldus gedaan op 30 september 2004 door""" 

DATE_REGEX = re.compile("(\d{1,2}-\d{1,2}-\d{4})|(\d{1,2} \w.*? \d{4})") 

def find_date(line): 
    matched = DATE_REGEX.search(line) 
    if (matched): 
     return matched.group(0) 
    else: 
     return None 

for line in SOURCE_DATA_SAMPLE.split("\n"): 
    date = find_date(line) 
    print(date) 

有一个很棒的网站叫做Regex101,可以帮助编写表达式;我用了上面的示例是在这里:https://regex101.com/r/wMFfx4/2

0

内置datetime模块的datetime.strpdate()可以解析日期in a number of formats,包括区域设置特定的人。您仍然需要首先从文本中提取日期 - 或者使用其他一些分析方法的正则表达式(例如,它们可能位于文本的某些已知的非常特定的部分)。