我试图从输入的字符串中减去四分之一,其格式类似于“ 2002q2”,这意味着year = 2002年第2季度。
我试图定义一个函数来完成这项工作
def subtract_quarter(s):
y,q = map(int,tuple(s.split('q')))
if q>1:
q = q-1
else:
q=4
y=y-1
return 'q'.join([str(y),str(q)])
subtract_quarter('2000q1')
输出: '1999q4'
但是有没有更简单的方法或pythonic方法呢?
答案 0 :(得分:2)
我们绝对可以使它更紧凑,并与三角洲三角洲合作:
def add_quarters(s, dq):
y,q = map(int,tuple(s.split('q')))
yq2 = 4*y + q + dq
return '{}q{}'.format(yq2//4, yq2%4)
例如:
>>> add_quarters('2000q4', 1)
'2001q1'
>>> add_quarters('2000q4', 15)
'2004q3'
>>> add_quarters('2000q4', -1)
'2000q3'
>>> add_quarters('2000q4', -5)
'1999q3'
因此,我们在这里可以加/减任意数量的季度。通过使用-1
,我们减去一个四分之一。
话虽这么说,但我不确定首先使用字符串是否是个好主意。最好使用代表季度数的整数(例如,自2000年1月1日以来)或使用date
对象。通过使用字符串,您可以使其更容易出错,因为例如字符串可以包含'foo-bar'
。通过使用整数,至少值的“格式”不会错误。