如何从列表中筛选特定时间段日期对应的PR ID?
筛选指定月份的PR ID
Python脚本实现
如果你用Python处理这个列表,可以借助datetime模块解析日期字符串,判断月份后筛选提取PR ID:
from datetime import datetime # 你的原始数据 pr_list = [ { "Date Merged": "6/1/2023 3:46:53 PM", "PR ID": "470" }, { "Date Merged": "5/30/2023 2:44:25 PM", "PR ID": "447" } ] # 筛选5月的PR ID may_pr_ids = [ item["PR ID"] for item in pr_list # 解析日期字符串,判断月份是否为5 if datetime.strptime(item["Date Merged"], "%m/%d/%Y %I:%M:%S %p").month == 5 ] print(may_pr_ids) # 输出结果:['447']
Ansible中实现
如果你是在Ansible里处理这个变量,结合你提到的map过滤器,再搭配selectattr和日期处理就能完成筛选:
方式1:正则匹配(简单快速)
直接用正则匹配日期开头为5/的条目:
- name: 提取5月PR ID hosts: localhost vars: pr_data: - {"Date Merged": "6/1/2023 3:46:53 PM", "PR ID": "470"} - {"Date Merged": "5/30/2023 2:44:25 PM", "PR ID": "447"} tasks: - debug: msg: "{{ pr_data | selectattr('Date Merged', 'regex', '^5/') | map(attribute='PR ID') | list }}"
方式2:日期解析(严谨准确)
通过date过滤器将字符串转为日期对象,再判断月份:
- name: 严谨提取5月PR ID hosts: localhost vars: pr_data: - {"Date Merged": "6/1/2023 3:46:53 PM", "PR ID": "470"} - {"Date Merged": "5/30/2023 2:44:25 PM", "PR ID": "447"} tasks: - debug: msg: "{{ pr_data | selectattr('Date Merged', 'date', '%m/%d/%Y %I:%M:%S %p') | selectattr('Date Merged', 'month', 5) | map(attribute='PR ID') | list }}"
内容的提问来源于stack exchange,提问作者jerdub1993
相关产品推荐
相关产品推荐

