如何从字符串python 3中提取日期?

如何从字符串python 3中提取日期?,python,Python,如何在python 3中从字符串中提取日期 首先要查找具有日期的子字符串 如果找到,则拆分元素 import re test_list = [["4","list1",'FEE(DR09/01/2019', '1', '13.50'], ["9","list2",'FEE11/01/2019','45.00', '105.00', '0.00', '105.00'], ["7","list3",'2-BED ROOM (09/01/2019 -', '09/01/2019)', '1', '15

如何在python 3中从字符串中提取日期

首先要查找具有日期的子字符串 如果找到,则拆分元素

import re
test_list = [["4","list1",'FEE(DR09/01/2019', '1', '13.50'],
["9","list2",'FEE11/01/2019','45.00', '105.00', '0.00', '105.00'],
["7","list3",'2-BED ROOM (09/01/2019 -', '09/01/2019)', '1', '150.00']] 

    subs = r"\d{1,2}/\d{1,2}/\d{4}"
l=[]
for x in test_list:
    for item in x:
        if re.search(subs, item):
            l.append(item)
print(l)
预期产出:

[["4","list1","FEE(DR","09/01/2019", '1', '13.50'],
["9","list2",'FEE','11/01/2019','45.00', '105.00', '0.00', '105.00'],
["7","list3",'2-BED ROOM ( ','09/01/2019',' -', '09/01/2019',')', '1', 
'150.00']]

这只适用于您的具体情况

。。。
对于测试列表中的元素:
对于范围内的索引(len(元素[2]):
如果作战需求文件(要素[2][索引])>47且作战需求文件(要素[2][索引])<52:
插入(3,要素[2][索引:]
元素[2]=元素[2][:索引]
如果len(元素[3])>10:
要素。插入(4,要素[3][10:])
元素[3]=元素[2][:10]
打破
...

但是,如果您想要从字符串中获取日期的函数,只需在函数中放第二位,就可以使用python3在给定字符串中提取日期:

通过以下代码:

from pygrok import Grok
input_string = input()
date_pattern = '%{YEAR:year}-%{MONTHNUM:month}-%{MONTHDAY:day}'
grok = Grok(date_pattern)
a=grok.match(input_string)
for key in a.keys():
    print((str(a[key])+'-'),end='')
输入:猴子2010-07-10爱香蕉


输出:2010-07-10

使用
re.split
和捕获组:

import re
test_list = [["4","list1",'FEE(DR09/01/2019', '1', '13.50'],
["9","list2",'FEE11/01/2019','45.00', '105.00', '0.00', '105.00'],
["7","list3",'2-BED ROOM (09/01/2019 -', '09/01/2019)', '1', '150.00']] 

subs = r"(\d{1,2}/\d{1,2}/\d{4})"

res = []
for l in test_list:
    sub = []
    for s in l:
        sub.extend([i for i in re.split(subs, s) if i])
    res.append(sub)
print(res)
输出:

[['4', 'list1', 'FEE(DR', '09/01/2019', '1', '13.50'],
 ['9', 'list2', 'FEE', '11/01/2019', '45.00', '105.00', '0.00', '105.00'],
 ['7', 'list3', '2-BED ROOM (',  '09/01/2019', ' -', '09/01/2019', ')', '1', '150.00']]

到目前为止你尝试了什么?我更新了我的ocde请查看again@pyml为什么您期望的子列表中的最后一个日期带有括号?它们不应该是
'2-BED ROOM('、'09/01/2019'、'-'、'09/01/2019'
?对不起,我错了,我忘了分开,现在我编辑了我的输出,请再次查看