Python 如何使用';年月日';格式
我有一个Python脚本,可以从其他数据源生成.csv文件 当前,当用户意外地在日期中手动添加空格时,会发生错误。可以在前面添加一个空格(“1/13/17”),以便在月份前面有一个空格,而不是将日期输入为“1/13/17” 我已经在下面介绍了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,
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'