从python中的字符串变量中仅提取月份

时间:2018-12-26 16:17:42

标签: python python-3.x

['2019-02-18T00:00:00', '2019-03-28T00:00:00', '2019-02-01T00:00:00', '2019-08-01T00:00:00', '2019-02-20T00:00:00']

我只想在此列表中提取月份值,然后将结果放在另一个列表中以获取此输出: ['02', '03', '02', '08', '02']

4 个答案:

答案 0 :(得分:5)

from datetime import datetime
data =['2019-02-18T00:00:00', '2019-03-28T00:00:00', '2019-02-01T00:00:00', '2019-08-01T00:00:00', '2019-02-20T00:00:00']

result = [datetime.strptime(i, '%Y-%m-%dT%H:%M:%S').month for i in data]

答案 1 :(得分:2)

月份始终是字符串的元素5&6,因为年份始终是元素0-3,而连字符是元素4。在我们的示例中,原始列表被命名为“ full_date_list”。

month_list = [full_date[5:7] for full_date in full_date_list]

答案 2 :(得分:1)

使用正则表达式:

import re
lst = ['2019-02-18T00:00:00', '2019-03-28T00:00:00', '2019-02-01T00:00:00', '2019-08-01T00:00:00', '2019-02-20T00:00:00']
r = r'\d{4}-(\d\d)-\d\dT\d\d:\d\d:\d\d'
x = [re.match(r, item).group(1) for item in lst]
print(x)

答案 3 :(得分:1)

有多种方法可以做到这一点 一种方法是使用像这样的日期时间库-

from datetime import datetime
input =['2019-02-18T00:00:00', '2019-03-28T00:00:00', '2019-02-01T00:00:00', '2019-08-01T00:00:00', '2019-02-20T00:00:00']
result=[]
for i in input:
    result.append(str(datetime.strptime(i, '%Y-%m-%dT%H:%M:%S').month))

print(result)

输出 ['2', '3', '2', '8', '2']

或者您可以使用字符串切片执行此操作-

input =['2019-02-18T00:00:00', '2019-03-28T00:00:00', '2019-02-01T00:00:00', '2019-08-01T00:00:00', '2019-02-20T00:00:00']
result=[]
for i in input:
    result.append(i[5:7])

print(result)

输出 ['02', '03', '02', '08', '02']

您可以使用任何喜欢的方式