我有一个一周中可能包含假期的日期列表,例如独立日,而不是日期名称星期五。 (进行天气数据解析)寻找一种方法将我的列表与一周中的几天列表进行比较并找到丢失的一个(或多个)。我想出了以下方法,只要不是连续两个,它就可以很好地满足我的目的,但我真的很想找到一种更好的方法,使其更加可靠,并能够在以后重新调整它的用途。可能有一个标准库方法吗?
daysOfTheWeek = ["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"]
days = ["NOTADAY", "saturday", "NOTADAY", "monday"]
repaired = []
for i, day in enumerate(days):
try:
dayIndex = daysOfTheWeek.index(day.lower())
except ValueError:
try:
next = indices[i+1]
dayIndex = next-1
except IndexError:
dayIndex = 6
if dayIndex > 6:
dayIndex = 0
repaired.append(daysOfTheWeek[dayIndex])
for r in repaired:
print r.capitalize()
最佳答案
假设您要在 days
中找到至少一个包含在 daysOfTheWeek
的循环模式中的字符串,以便
days = ["NOTADAY", "sunday", "NOTADAY", "NOTADAY", "NOTADAY", "NOTADAY"]
变成:
['Saturday', 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday']
这有效:
if any(day in daysOfTheWeek for day in days):
for i, day in enumerate(days):
if day in daysOfTheWeek:
j=daysOfTheWeek.index(day)
repaired=[daysOfTheWeek[k % len(daysOfTheWeek)].capitalize()
for k in range(j-i, j+len(days)-i)]
print days
print repaired
break
else:
print 'cannot be repaired'
关于python - 比较字符串列表以查找序列的缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24540992/