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

2024-04-26 05:22:50 发布

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

我从一个没有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" and Week WW-DD/MM/YYYY. So from the above example, I'm after two dates: 16/07/2018 and 23/07/2018.

请记住,在这个<div>中可能有1到4个日期,所以我需要提取的时间并不总是两周

我也会理想地将检索到的每个日期打印在新的行上

你知道我该怎么做吗

提前感谢您的回复:)


Tags: andnamedivapi信息id网站html
3条回答

您可以使用正则表达式(在Python模块re-the 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

我想说的是,首先应该研究使用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

^{}模块怎么样:

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

相关问题 更多 >