隔离日期格式的字符串部分

时间:2018-07-18 14:24:46

标签: python python-2.7

我从没有API或任何东西的网站上获取信息。我已经登录并检索HTML部件,并且我的系统找到了正确的<div>,其中将包含我需要的信息。但是我需要删除所有非“ DD / MM / YYYY”格式的信息。因此,我需要删除此字符串中不是该格式的所有部分。这是返回的<div>的示例:

<div id="wkDrop">
    <div  name="weekstarts" id="2018_29">Week 29-16/07/2018</div>
    <div style="display:none" name="weekstarts" id="2018_30">Week 30-23/07/2018</div>
</div>

每周更改的部分是id =“ YYYY_WW”和Week WW-DD / MM / YYYY。因此,从上面的示例来看,我要经过两个日期:2018年7月16日和2018年7月23日。

请记住,此<div>中可能有1到4个日期,因此我提取的时间不一定总是两周。

理想情况下,我还将每个检索到的日期打印在新行上。

有什么想法我会怎么做吗?

在此先感谢您的答复:)

3 个答案:

答案 0 :(得分:0)

首先,您应该研究使用BeautifulSoup删除div标签并提取数据。然后,您可以使用split("^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$")

`将字符串拆分为遵循正则表达式的字符串数组:

^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$

以该格式(ref)提取日期

答案 1 :(得分:0)

您可以使用正则表达式(在Python模块re-documentation is here中)检索日期。该正则表达式的解释可以为found here

data = """
<div id="wkDrop">
    <div  name="weekstarts" id="2018_29">Week 29-16/07/2018</div>
    <div style="display:none" name="weekstarts" id="2018_30">Week 30-23/07/2018</div>
</div>"""

import re

for dates in re.findall(r'\d{2}/\d{2}/\d{4}', data):
    print(dates)

打印:

16/07/2018
23/07/2018

答案 2 :(得分:0)

re模块如何:

import re

str1 = '<div id="wkDrop"><div  name="weekstarts" id="2018_29">Week 29-16/07/2018</div><div style="display:none" name="weekstarts" id="2018_30">Week 30-23/07/2018</div></div>'

match=re.findall('(\d+/\d+/\d+)',str1)

输出:

['16/07/2018', '23/07/2018']