需要帮助从 Python 中的文本中提取日期
Need help extracting date from text in Python
我每天都有通过 python 代码输入的数据:
id="ContentPlaceHolder1_cph_main_cph_main_SummaryGrid">\r\n\t\t<tr class="tr-header">\r\n\t\t\t<th scope="col"> </th><th class="right-align" scope="col">Share<br>Price</th><th class="right-align" scope="col">NAV</th><th class="right-align" scope="col">Premium/<br>Discount</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Current</td><td class="right-align">.14</td><td class="right-align">.82</td><td class="right-align">-12.28%</td>\r\n\t\t</tr>
我需要提取 2 个价格和百分比值,在此示例中为“$19.14”、“$21.82”和“-12.28%”,但我无法弄清楚如何解析和提取,是否有通过遍历和搜索文本 before/after?
来做到这一点
之前和之后的文字始终相同,只是日期发生了变化。如果这种方法不行,还有其他方法吗?非常感谢!
如果日期是字符串变化的唯一内容,您可以拆分字符串以获得日期:
result = mystring.split(
'</span>\r\n\t\t\t\t\t\t\t</p>\r\n\r\n\t\t\t\t\t\t\t<div class="table-wrapper">')
date = result[0][-10:]
在这里您将获得纯字符串形式的日期,但您也可以将其拆分以获得日期的每个组成部分的整数,如下所示:
month, day, year = [int(num) for num in date.split('/')]
这是所需的输出:
from bs4 import BeautifulSoup
markup = """
<div class="row-fluid">
<div class="span6">
<p class="as-of-date">
<span id="ContentPlaceHolder1_cph_main_cph_main_AsOfLabel">
As of 9/24/2021
</span>
</p>
<div class="table-wrapper">
<div>
<table class="cefconnect-table-1 table table-striped" cellspacing="0" cellpadding="5"
Border="0
</div>
</div>
</div>
</div>
"""
soup = BeautifulSoup(markup, 'html.parser')
#print(soup.prettify())
tags= soup.select_one('#ContentPlaceHolder1_cph_main_cph_main_AsOfLabel').get_text()
print(tags.replace('As of ', ' '))
输出:
9/24/2021
我每天都有通过 python 代码输入的数据:
id="ContentPlaceHolder1_cph_main_cph_main_SummaryGrid">\r\n\t\t<tr class="tr-header">\r\n\t\t\t<th scope="col"> </th><th class="right-align" scope="col">Share<br>Price</th><th class="right-align" scope="col">NAV</th><th class="right-align" scope="col">Premium/<br>Discount</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>Current</td><td class="right-align">.14</td><td class="right-align">.82</td><td class="right-align">-12.28%</td>\r\n\t\t</tr>
我需要提取 2 个价格和百分比值,在此示例中为“$19.14”、“$21.82”和“-12.28%”,但我无法弄清楚如何解析和提取,是否有通过遍历和搜索文本 before/after?
来做到这一点之前和之后的文字始终相同,只是日期发生了变化。如果这种方法不行,还有其他方法吗?非常感谢!
如果日期是字符串变化的唯一内容,您可以拆分字符串以获得日期:
result = mystring.split(
'</span>\r\n\t\t\t\t\t\t\t</p>\r\n\r\n\t\t\t\t\t\t\t<div class="table-wrapper">')
date = result[0][-10:]
在这里您将获得纯字符串形式的日期,但您也可以将其拆分以获得日期的每个组成部分的整数,如下所示:
month, day, year = [int(num) for num in date.split('/')]
这是所需的输出:
from bs4 import BeautifulSoup
markup = """
<div class="row-fluid">
<div class="span6">
<p class="as-of-date">
<span id="ContentPlaceHolder1_cph_main_cph_main_AsOfLabel">
As of 9/24/2021
</span>
</p>
<div class="table-wrapper">
<div>
<table class="cefconnect-table-1 table table-striped" cellspacing="0" cellpadding="5"
Border="0
</div>
</div>
</div>
</div>
"""
soup = BeautifulSoup(markup, 'html.parser')
#print(soup.prettify())
tags= soup.select_one('#ContentPlaceHolder1_cph_main_cph_main_AsOfLabel').get_text()
print(tags.replace('As of ', ' '))
输出:
9/24/2021