0

我有一个字段名称日期,其值如 T、T+1、T+2、T-2、T-1 等。根据运算符(+/-)和操作数 2(n),我需要执行计算,如...

if 
  T then date.today()
  T+n then date.today()+ timedelta(days=n)
  T-n then date.today()- timedelta(days=n)

在 Perl 我用来做...

if (var =~ /T/) { today();}
if (var =~ /T\+(\d+)/) { today()+$1;}
if (var =~ /T\-(\d+)/) { today()-$1;}

我想以同样的方式使用 Python 使用正则表达式。任何人都可以帮助我吗?

4

3 回答 3

1
>>> import datetime
>>> import re
>>>
>>> def t(var):
...     today = datetime.date.today()
...     if var == 'T':
...         return today
...     matched = re.search(r'T\+(\d+)', var)
...     if matched:
...         return today + datetime.timedelta(int(matched.group(1)))
...     matched = re.search(r'T-(\d+)', var)
...     if matched:
...         return today - datetime.timedelta(int(matched.group(1)))
...
>>> t('T')
datetime.date(2013, 6, 30)
>>> t('T+1')
datetime.date(2013, 7, 1)
>>> t('T-1')
datetime.date(2013, 6, 29)

http://docs.python.org/2/library/re.html

http://docs.python.org/2/library/datetime.html

于 2013-06-30T11:04:21.493 回答
0

相同的原则适用于 Python,尽管“拼写”不同。

在 Python 中,正则表达式是用re模块完成的。日期处理由datetime模块完成。

于 2013-06-30T11:01:35.300 回答
0
from datetime import date, timedelta
day = date.today()
if len(var)==3:
    delta = timedelta(int(var[2:]))
    if var[1]=='+':
        day += delta
    elif var[1]=='-':
        day -= delta

您可以operator在最后使用模块if

from operator import add, sub
day = {'+': add, '-': sub}[var[1]](day, delta)
于 2013-06-30T11:29:49.997 回答