我有一个字段名称Date,其值如T,T + 1,T + 2,T-2,T-1等。根据运算符(+/-)和operand2(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使用正则表达式。任何人都可以帮助我。
答案 0 :(得分: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)
答案 1 :(得分:0)
相同的原则适用于Python,尽管“拼写”不同。
在Python中,正则表达式使用re
module完成。使用datetime
module完成日期处理。
答案 2 :(得分: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)