Python 如何使用';年月日';格式

Python 如何使用';年月日';格式,python,datetime,trim,Python,Datetime,Trim,我有一个Python脚本,可以从其他数据源生成.csv文件 当前,当用户意外地在日期中手动添加空格时,会发生错误。可以在前面添加一个空格(“1/13/17”),以便在月份前面有一个空格,而不是将日期输入为“1/13/17” 我已经在下面介绍了Python脚本的相关部分: def processDateStamp(sourceStamp): matchObj = re.match(r'^(\d+)/(\d+)/(\d+)\s', sourceStamp) (month, day,

我有一个Python脚本,可以从其他数据源生成.csv文件

当前,当用户意外地在日期中手动添加空格时,会发生错误。可以在前面添加一个空格(“1/13/17”),以便在月份前面有一个空格,而不是将日期输入为“1/13/17”

我已经在下面介绍了Python脚本的相关部分:

def processDateStamp(sourceStamp):
    matchObj = re.match(r'^(\d+)/(\d+)/(\d+)\s', sourceStamp)
    (month, day, year) = (matchObj.group(1), matchObj.group(2), matchObj.group(3))
    return "%s/%s/%s" % (month, day, year) 
如何在之前以及可能在日期的其他组成部分(日和年)上为未来修剪空间问题


提前感谢。

因为您处理的是日期,所以在这里使用
datetime.strtime
可能比使用regex更合适。这种方法有两个优点:

  • 这让阅读的人稍微清楚一点,你正在尝试解析日期
  • 当您试图解析不表示日期的数据或以不正确的格式表示日期时,您的代码将更容易抛出异常-这很好,因为它可以帮助您捕获并解决可能被忽略的问题
代码如下:

from datetime import datetime


def processDateStamp(sourceStamp):
    date = datetime.strptime(sourceStamp.replace(' ', ''), '%M/%d/%y')
    return '{}/{}/{}'.format(date.month, date.day, date.year)


if __name__ == '__main__':
    print(processDateStamp('1/13/17'))     # 1/13/17
    print(processDateStamp(' 1/13/17'))    # 1/13/17
    print(processDateStamp(' 1 /13 /17'))  # 1/13/17

您还可以使用库中的
解析器。您将获得的主要好处-它可以识别日期时间格式(有时可能有用):

来自dateutil导入解析器的

从日期时间导入日期时间
def processDateTimeStamp(sourceStamp):
dt=parser.parse(sourceStamp)
返回dt.strftime(“%m/%d/%y”)
processDateTimeStamp(“1/13/17”)#返回2017年1月13日
processDateTimeStamp(“2017年1月13日”)
processDateTimeStamp(“1-13-17”)
processDateTimeStamp(“1.13.17”)

再次,这是使用
拆分
剥离
加入
的绝佳机会:

def remove_spaces(date_string):
    date_list = date_string.split('/')
    result = '/'.join(x.strip() for x in date_list)
    return result
示例

In [7]: remove_spaces('1/13/17')
Out[7]: '1/13/17'

In [8]: remove_spaces(' 1/13/17')
Out[8]: '1/13/17'

In [9]: remove_spaces(' 1/ 13/17')
Out[9]: '1/13/17'