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

2024-04-16 20:58:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我提出了以下几点,应该相当接近,但不太正确。当我尝试测试数据是否为工作日时,出现以下错误。AttributeError: 'str' object has no attribute 'isoweekday'

这是我脆弱的代码:

offset = str(link).find('Run:')
amount = offset + 15
pos = str(link)[offset:amount]
if pos.isoweekday() in range(1, 6):
    outF.write(str(link))
    outF.write('\n')

我在寻找字符串“Run:”(冒号后面总是有2个空格),然后我想向右移动15个空格,以捕捉日期。所以,n个空格来找到“Run:”然后得到日期,比如“2018-12-23”,然后测试这个日期是否是工作日。如果这个子字符串是一个工作日,我想将整个字符串写入CSV文件中的一行(写入CSV文件很好)。我只是不知道如何找到那个日期(字符串中有几个日期;我需要紧跟在“Run:”后面的那个日期)。在


Tags: 文件csvrun字符串poslinkamountoffset
3条回答

可能要转换回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')

那么它应该像预期的那样工作。在

你只忘了load it into a ^{} object

from datetime import datetime

# ...
pos_date = datetime.strptime(pos, "%Y-%m-%d")
if pos_date.isoweekday() in range(1, 6):  
    # ...

另外,由于您使用的是.isoweekday(),并且Monday表示为1,所以您不需要检查下边界:

^{pr2}$

假设你的链接是

link = "Your Link String is Run:  2018-12-21 21:15:48"

下面的代码可以很好地找到从Run开始的偏移量

^{pr2}$

{{cd2>后面有两个空格。 现在准确地提取日期字符串2018-12-21,我们需要在偏移量中添加6,因为{}在开始日期字符串之前有6个字符。在

pos = str(link)[offset + 6:amount]

现在用

^{4}$

记住在程序文件顶部导入datetime作为

from datetime import datetime

现在检查并显示日期是否为工作日

if pos_date.isoweekday() in range(1, 6):
    print("It's a Week Day!")

这将返回It's a Week Day!。在

相关问题 更多 >