需要帮助从 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">&nbsp;</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>
    &lt;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