使用Python获取一周中两天之间的日期

时间:2018-07-22 12:28:57

标签: python date beautifulsoup

我正在使用python和beautifulSoup解析html文档,并在其中获取具有以下格式的字符串,即workingdates = 'Wednesday-Tuesday'

从那时起,我得到startDate = 'Wednesday'endDate = 'Tuesday'

我想创建一个包含所有工作日的列表,即list=['Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', 'Monday', 'Tuesday']

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您可以构建所有工作日的列表

weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 
             'Friday', 'Saturday', 'Sunday']

并定义了开始日期和结束日期

startDate, endDate  = 'Wednesday', 'Tuesday'

您可以在weekdays列表中找到他们的位置

start = weekdays.index(startDate)
end = weekdays.index(endDate)

有两种可能的情况start < endstart > 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']