有没有更简单的方法可以从 Python 中的字符串中减去季度(3 个月)?



我试图从字符串中减去四分之一,输入的格式类似于'2002q2',这意味着年份= 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 方法来做到这一点?

我们绝对可以使它更紧凑并使用 aribtrary delta:

def add_quarters(s, dq):
y,q = map(int, 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'。通过使用整数,至少值的"格式"不能不正确。

相关内容

最新更新