如果您不想导入日历库,并且需要更健壮的东西 - 您可以使您的代码比某些代码更动态地处理不一致的文本输入提供的其他解决方案。你可以:
- 创建一个
month_to_number 字典
- 遍历该字典的
.items() 并检查字符串s 的小写字母是否在小写键k 中。
month_to_number = {
'January' : 1,
'February' : 2,
'March' : 3,
'April' : 4,
'May' : 5,
'June' : 6,
'July' : 7,
'August' : 8,
'September' : 9,
'October' : 10,
'November' : 11,
'December' : 12}
s = 'jun'
[v for k, v in month_to_number.items() if s.lower() in k.lower()][0]
Out[1]: 6
同样,如果您有一个列表 l 而不是字符串,您可以添加另一个 for 来循环列表。我创建的列表值不一致,但输出仍然是正确月份数所需要的:
l = ['January', 'february', 'mar', 'Apr', 'MAY', 'JUne', 'july']
[v for k, v in month_to_number.items() for m in l if m.lower() in k.lower()]
Out[2]: [1, 2, 3, 4, 5, 6, 7]
这里的用例是我使用Selenium 通过根据某些条件自动选择下拉值来从网站上抓取数据。无论如何,这需要我依赖一些数据,我相信我们的供应商每个月都会手动输入标题,如果它们的格式与历史上的略有不同,我不想回到我的代码。