分析日期:下列文本里面包含了多个日期,将文本里面出现的日期转换成另外一种格式,如
2016-10-31 --> 10/31/2016
2016-9-4 --> 09/04/2016
文本如下:
text = '''
1. abc 2016-10-31
2. xyz 2016-9-4
3. aef 2016-10-aa
4. asasf asdf 10-14
5. 2013-10-3 234234
6. 1945-8-15 abc 1945
7. 1972-01-30 asdf 1988-10-1
运行示例如下:
import re
import time
import datetime
def validate_date(text):
'''验证日期格式
:param text: 待检索文本
>>> validate_date('2020-05-20')
True
>>> validate_date('2020-05-32')
False
'''
try:
if text != time.strftime('%Y-%m-%d', time.strptime(text, '%Y-%m-%d')):
raise ValueError
return True
except ValueError:
return False
def validate_datetime(text):
'''验证日期+时间格式
:param text: 待检索文本
>>> validate_datetime('2020-05-20 13:14:15')
True
>>> validate_datetime('2020-05-32 13:14:15')
False
'''
try:
if text != datetime.datetime.strptime(text, '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S'):
raise ValueError
return True
except ValueError:
return False
def match_date(text):
'''正则表达式提取文本所有日期
:param text: 待检索文本
>>> match_date('日期是2020-05-20 13:14:15.477062.')
['2020-05-20']
'''
pattern = r'(\d{4}-\d{1,2}-\d{1,2})'
pattern = re.compile(pattern)
result = pattern.findall(text)
return result
def match_datetime(text):
'''正则表达式提取文本所有日期+时间
:param text: 待检索文本
>>> match_datetime('日期是2020-05-20 13:14:15.477062.')
['2020-05-20 13:14:15']
'''
pattern = r'(\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2})'
pattern = re.compile(pattern)
result = pattern.findall(text)
return result
参考一下,如有帮助,望采纳,谢谢
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
代码如下:{如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢}。
import re
text = '''
1. abc 2016-10-31
2. xyz 2016-9-4
3. aef 2016-10-aa
4. asasf asdf 10-14
5. 2013-10-3 234234
6. 1945-8-15 abc 1945
7. 1972-01-30 asdf 1988-10-1
'''
def fp(r):
return "{:0>2}/{:0>2}/{:4}".format(r.group(2),r.group(3),r.group(1))
text = re.sub(r'(\d{4})-(\d{1,2})-(\d{1,2})',fp,text)
print(text)