从字符串中删除识别的日期

问题描述 投票:2回答:4

作为输入,我有几个包含日期格式不同的字符串,例如

  • “彼得在16:45喝茶”
  • “我的生日在[[08-07-1990] >>”“在
  • [7月11日星期六
  • ,我会回家”我使用dateutil.parser.parse识别字符串中的日期。在下一步中,我想从字符串中删除日期。结果应该是

    “彼得在”喝茶“>
  • “我的生日在”
  • “我回家了”
  • 有没有简单的方法可以实现这一目标?

[作为输入,我有几个包含不同格式的日期的字符串,例如“ Peter在16:45喝茶”“我的生日是1990年8月7日”“在7月11日,星期六,我将回到家”,我使用dateutil。 parser.parse ...

python date python-dateutil
4个回答
3
投票
您可以在fuzzy_with_tokens中使用fuzzy_with_tokens选项:

dateutil.parser.parse


1
投票
如果您定义了一个将字符串作为日期或不作为日期进行验证的函数,我们可以单行执行

>>> dt, tokens = parse("April drinks tea at 16:45", fuzzy_with_tokens=True) >>> print(dt) 2018-04-17 16:45:00 >>> print('<missing>'.join(tokens)) drinks tea at


0
投票
您可以使用re.findall()方法查找日期,然后将其与字符串分开。我认为下面链接中的代码可以解决您的问题。

from dateutil import parser data = ['Peter drinks tea at 16:45', 'My birthday is on 08-07-1990', "On Sat 11 July I'll be back home"] def is_valid_date(date_str): try: parser.parse(date_str) return True except: return False new_list = [' '.join([w for w in line.split() if not is_valid_date(w)]) for line in data] print(new_list) # ['Peter drinks tea at', 'My birthday is on', "On I'll be back home"]


0
投票
https://stackoverflow.com/a/2770062/9721027
测试:

def remove_dates(sentence): """remove the dates like Mar 30 2013""" sentence = re.sub('(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{4}', ' ', sentence) return sentence

© www.soinside.com 2019 - 2024. All rights reserved.