为了账号安全,请及时绑定邮箱和手机立即绑定

如何搜索子字符串,找到开头和结尾,然后检查该数据是否为工作日?

如何搜索子字符串,找到开头和结尾,然后检查该数据是否为工作日?

MM们 2021-09-24 21:22:40
我想出了以下应该相当接近的内容,但它不太正确。当我尝试测试数据是否为工作日时出现以下错误。 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

    # ...


查看完整回答
反对 回复 2021-09-24
?
互换的青春

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')

然后它应该按预期工作。


查看完整回答
反对 回复 2021-09-24
  • 3 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号