我想出了以下应该相当接近的内容,但它不太正确。当我尝试测试数据是否为工作日时出现以下错误。 AttributeError: 'str' object has no attribute 'isoweekday'这是我微弱的代码:offset = str(link).find('Run:')amount = offset + 15pos = str(link)[offset:amount]if pos.isoweekday() in range(1, 6): outF.write(str(link)) outF.write('\n')我正在寻找字符串“运行:”(它在冒号后总是有 2 个空格),然后我想向右移动 15 个空格,以捕获日期。因此,查找“运行:”的 n 个空格,然后获取日期,例如“2018-12-23”并测试此日期是否为工作日。如果此子字符串是工作日,我想将整个字符串写入 CSV 文件中的一行(写入 CSV 文件工作正常)。我只是不确定如何找到那个日期(字符串中有多个日期;我需要紧跟在“运行:”之后的那个)。
3 回答

绝地无双
TA贡献1946条经验 获得超4个赞
您只是忘记将其加载到datetime对象中:
from datetime import datetime
# ...
pos_date = datetime.strptime(pos, "%Y-%m-%d")
if pos_date.isoweekday() in range(1, 6):
# ...
此外,由于您正在使用.isoweekday()并且星期一表示为 1,因此您实际上不需要检查下边界:
if pos_date.isoweekday() <= 5: # Monday..Friday
# ...

互换的青春
TA贡献1797条经验 获得超6个赞
也许转换回datetime类型:
offset = str(link).find('Run:')
amount = offset + 15
pos = str(link)[offset:amount]
if datetime.strptime(pos,'%Y-%m-%d').isoweekday() in range(1, 6):
outF.write(str(link))
outF.write('\n')
然后它应该按预期工作。
添加回答
举报
0/150
提交
取消