如何使用'm / d / yy'格式在时间戳内修剪空格

时间:2017-01-19 19:12:44

标签: 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, year) = (matchObj.group(1), matchObj.group(2), matchObj.group(3))
    return "%s/%s/%s" % (month, day, year) 

如何在之前以及可能在日期(日期和年份)的其他组成部分以及将来修剪空间问题?

提前致谢。

3 个答案:

答案 0 :(得分:4)

由于您正在处理日期,因此在此处使用datetime.strptime比使用正则表达式更合适。这种方法有两个优点:

  • 对于那些正在尝试解析日期的人来说,它会更加清晰。
  • 当您尝试解析不代表日期的数据或以不正确的格式表示日期时,您的代码更容易抛出异常 - 这很好,因为它可以帮助您捕获并解决可能会发生的问题被忽视

以下是代码:

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

答案 1 :(得分:1)

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

from dateutil import parser
from datetime import datetime

def processDateTimeStamp(sourceStamp):
    dt = parser.parse(sourceStamp)
    return dt.strftime("%m/%d/%y")

processDateTimeStamp(" 1 /13 / 17")  # returns 01/13/17
processDateTimeStamp(" jan / 13 / 17")
processDateTimeStamp(" 1 - 13 - 17")
processDateTimeStamp(" 1 .13 .17")

答案 2 :(得分:0)

再一次,使用splitstripjoin的绝佳机会:

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'