[英]Is there a simpler way to subtract quarter(3 months) from string in Python?
我正在嘗試從輸入格式類似於'2002q2'的字符串中減去四分之一,這意味着year = 2002 Quarter 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方法呢?
我們絕對可以使它更緊湊,並且可以使用ribribry delta:
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'
。 通過使用整數,至少值的“格式”不能錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.