簡體   English   中英

有沒有一種簡單的方法可以從Python的字符串中減去四分之一(3個月)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM