如果行包含MM / DD / YY打印行中的日期

时间:2018-04-19 04:42:28

标签: python date

我想确定字符串是否包含格式为MM / DD / YY的日期。它可以是任何日期,只要它采用该格式。不知道我怎么表示这个。

for line in f:    
    if date in line:
        print(line)

数据:

>Unneeded text<

Account: 5

03/29/18      7,885,216.93-    208,557,351.68     200,672,134.75    2.18        12,151.81                                           
03/30/18      7,885,216.93-    208,557,351.68     200,672,134.75    2.18        12,151.81                                           
03/31/18      7,885,216.93-    208,557,351.68     200,672,134.75    2.18        12,151.81                                           
04/01/18      7,885,216.93-    208,557,351.68     200,672,134.75    2.18        12,151.81                                           
04/02/18     10,487,227.15     202,979,865.76     213,467,092.91    2.17        12,867.30                                           
04/03/18     26,149,970.46-    209,222,696.72     183,072,726.26    2.18        11,086.08                                           
04/04/18     13,606,232.52-    217,761,977.25     204,155,744.73    2.18        12,362.77                                           
04/05/18     29,929,731.83-    228,565,335.73     198,635,603.90    2.19        12,083.68                                           
04/06/18     32,832,695.61-    235,134,802.88     202,302,107.27    2.19        12,306.70                                           
04/07/18     32,832,695.61-    235,134,802.88     202,302,107.27    2.19        12,306.70                                           
04/08/18     32,832,695.61-    235,134,802.88     202,302,107.27    2.19        12,306.70                                           
04/09/18     31,908,656.83-    232,249,566.41     200,340,909.58    2.19        12,187.38                                           
04/10/18     20,367,782.42-    229,302,450.95     208,934,668.53    2.19        12,710.17                                           

>Unneeded text<

Account: 6

03/29/18      7,885,216.93-    208,557,351.68     200,672,134.75    2.18        12,151.81

这是一个账户的数据。我需要迭代大约30个帐户。问题是每个数据部分都由一些不必要的文本分隔。

我当前的脚本会抓取帐号#以及昨天的数据:

for line in f:
        if "ACCOUNT: " + Account in line:  
            TAccount = Account     
                for line in f:
                    if rdate.strftime("%m/%d/%y") in line:
                        print(line)  

我希望有一种方法可以找到任何以日期格式为MM / DD / YY开头的字符串

4 个答案:

答案 0 :(得分:3)

您可以使用此正则表达式识别此型号MM / DD / YYYY:

date_regex = '(0[1-9]|1[12])\/(0[1-9]|1[0-9]|2[0-9]|3[0-1])\/(\d{4})'

regexr example

你可以将它用于MM / DD / YY:

date_regex = '(0[1-9]|1[12])\/(0[1-9]|1[0-9]|2[0-9]|3[0-1])\/(\d{2})'

regexr example

答案 1 :(得分:1)

使用正则表达式

import re
s = "dssdfsdfsdfsdf 10/01/18 ssdfsfsf dsfsdfsdfsd"
print(re.findall("\d{2}/\d{2}/\d{2}", s))

<强>输出:

['10/01/18']

在你的情况下:

for line in f:
    date = re.search("\d{2}/\d{2}/\d{2}", line):
    if date:
        print(line, date.group())

答案 2 :(得分:1)

您可以使用re模块查找数据,并考虑使用datetime模块验证日期是否有效

for line in f:
    match=re.search(r'(\d+/\d+/\d+)',line)
    _date = match.group(1)
    try:
        datetime.datetime.strptime(_date,"%m/%d/%y")
        #To DO
    except:
        pass  #not valid date

答案 3 :(得分:1)

这是我从字符串中提取日期元素的方法:

month=int(f[0:2])
day=int(f[3:5])
Year=int(f[6:8])

检查这些是否提供有效日期可能是您问题的解决方案。