将YYYYMMDD转换/拆分为python中包含年,月,日的数据

Convert/split YYYYMMDD into data consisting of year, month, day in python

我的数据看起来像这样,我只需要用天。如何将int-yyyy mm dd拆分为三个整型:yy、mm、dd

1
2
3
4
5
6
YYYYMMDD
20170301
20170302
20170303
20170304
20170305


编辑:刚刚注意到OP只想要当天。如果您不愿意将字符串解释为一个datetime对象,@chrisz的答案会简单一些。

就在这一天:

1
2
my_date= '20170301'
my_day = int(my_date[-2:])

[-2:]表示将字符串从第二个最后一个字符切片到末尾,返回"01",然后由int()转换为整数。

原始答案:

如果要将日期解释为其他引用的datetime对象,请使用datetime模块中的strptime

输入:

1
2
3
4
5
import datetime
my_str = '20170301'
my_date = datetime.datetime.strptime(my_str,'%Y%m%d')
print(my_date)
print(type(my_date))

。输出:

1
2
2017-03-01 00:00:00
<class 'datetime.datetime'>

现在您可以解释datetime对象。现在您可以轻松获取年、月、日:

1
2
3
4
5
my_day = b.day
my_month = b.month
my_year = b.year
print(my_year, my_month, my_day)
print(type(my_year), type(my_month), type(my_day))

返回:

1
2
2017 3 1
<class 'int'> <class 'int'> <class 'int'>


您可以这样对字符串下标,所以只需将int转换为字符串,然后执行此操作,然后使用int()str()进行转换。

1
2
3
4
5
6
7
data = str(20170305)

year = int(data[0:4])
month = int(data[4:6])
day = int(data[6:8])

print(year, month, day)

输出:

1
2017 3 5

如果你真的想把它转换成一个日期对象,@idlehands的答案会帮助你。

如果你只需要一天,你也可以:

1
2
3
data = 20170305
day = abs(data) % 100
print(day)

输出:

1
5

请注意,这不会保留DD格式,您必须对此作出解释。


使用for循环,可以提取年、月和日,并将它们转换为整数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
data = ['20170301',
        '20170302',
        '20170303',
        '20170304',
        '20170305']

yyyy_mm_dd = []

for date in data:
    year = int(date[:4])
    month = int(date[4:6])
    day = int(date[6:])
    yyyy_mm_dd.append([year, month, day])

print(yyyy_mm_dd)
# [[2017, 3, 1], [2017, 3, 2], [2017, 3, 3], [2017, 3, 4], [2017, 3, 5]]

使用list comprehensionyyyy_mm_dd中提取天数:

1
2
3
4
days = [sub[-1] for sub in yyyy_mm_dd]

print(days)
# [1, 2, 3, 4, 5]