我正在使用python和beautifulSoup解析html文档,并在其中获取具有以下格式的字符串,即workingdates = 'Wednesday-Tuesday'
。
从那时起,我得到startDate = 'Wednesday'
和endDate = 'Tuesday'
。
我想创建一个包含所有工作日的列表,即list=['Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', 'Monday', 'Tuesday']
有什么想法吗?
答案 0 :(得分:2)
您可以构建所有工作日的列表
weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday',
'Friday', 'Saturday', 'Sunday']
并定义了开始日期和结束日期
startDate, endDate = 'Wednesday', 'Tuesday'
您可以在weekdays
列表中找到他们的位置
start = weekdays.index(startDate)
end = weekdays.index(endDate)
有两种可能的情况start < end
和start > end
。对于第一种情况,您只需采取普通切片即可。对于第二秒,您从start
切到列表的末尾,并将部分从列表的开头追加到end
。
if start < end:
lst = weekdays[start: end+1]
else:
lst = weekdays[start:] + weekdays[:end+1]
答案 1 :(得分:2)
您可以使用代表两周的列表来完成此操作,方法是找到startDate
的索引和endDate
的第一个出现的索引之后的{strong> 1}}:
startDate
startDate="Wednesday"
endDate="Tuesday"
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
fortnight = week * 2
start = fortnight.index(startDate)
end = fortnight.index(endDate, start + 1) + 1
workingdays = fortnight[start:end]
答案 2 :(得分:1)
您还可以使用cycle
中的itertools
:
from itertools import cycle
startDate, endDate = 'Wednesday', 'Tuesday'
l = []
for c in cycle(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']):
if not l and c == startDate:
l.append(c)
elif l and c == endDate:
l.append(c)
break
elif l:
l.append(c)
print(l)
打印:
['Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', 'Monday', 'Tuesday']