如何为 m/dd/yyyy 应用正则表达式

我有一列由包含日期和时间的字符串组成。日期的格式为:mm/dd/yyyy、m/d/yyyy、m/dd/yyyy 和 mm/d/yyyy 我使用正则表达式帮助我提取 mm/dd/yyyy 和 m/d/yyyy。我无法提取 m/dd/yyyy 和 mm/d/yyyy


import pandas as pd

import re


df = pd.read_csv('path of csv file')

corpus = []

for i in range(0,df.shape[0]):

    x = df.iloc[i]['OrderTime']

    if re.search(r'\d{2}/\d{2}/\d{4}',x):  ### for mm/dd/yyyy

        y= re.findall(r'\d{2}/\d{2}/\d{4}',x)

        corpus.append(y)

    elif re.search(r'\d{1}/\d{1}/\d{4}',x): ### for m/d/yyyy

        y= re.findall(r'\d{1}/\d{1}/\d{4}',x)

        corpus.append(y)

    elif re.search(r'\d{1}/\d{2}\d{4}',x): ### for m/dd/yyyy

        y= re.findall(r'\d{1}/\d{2}/\d{4}',x)

        corpus.append(y)

    elif re.search(r'\d{2}/\d{1}\d{4}',x): ### for mm/d/yyyy

        y= re.findall(r'\d{2}/\d{1}/\d{4}',x)

        corpus.append(y)

    else:                     ### empty cells or says nan

        y=["00/00/0000"]

        corpus.append(y)


print(corpus)

例如 - 日期是 12/1/2017 输出是 2/1/2017(问题与 mm/d/yyyy)对于像 1/10/2018 这样的日期输出是 00/00/0000


回首忆惘然
浏览 167回答 3
3回答

胡子哥哥

您知道“重复次数”可以是一个范围而不是单个数字吗?re.findall(r'\d{1,2}/\d{1,2}\d{4}',x)         ^^^^^   ^^^^^
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python