【问题标题】:Need help extracting date from text in Python [closed]需要帮助从 Python 中的文本中提取日期 [关闭]
【发布时间】:2021-11-20 19:07:31
【问题描述】:

我每天都有通过 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">$19.14</td><td class="right-align">$21.82</td><td class="right-align">-12.28%</td>\r\n\t\t</tr>

我需要提取 2 个价格和百分比值,在本例中为“$19.14”、“$21.82”和“-12.28%”,但我无法弄清楚如何解析和提取,有没有办法通过循环和搜索之前/之后的文本来做到这一点?

之前和之后的文本始终相同,但日期会发生变化。如果这种方法不可能,还有其他方法吗?非常感谢!

【问题讨论】:

  • 可以使用beautifulsoup等HTML解析器吗?
  • “日期更改”是什么意思?根据识别的难易程度,您可以使用正则表达式或字符串方法。
  • 我想我可以使用 beautifulsoup,但我仍然需要提取实际的信息,并且日期变化我的意思是日期每天都会变化
  • 这能回答你的问题吗? Extracting data from HTML table

标签: python html web-scraping text-extraction information-extraction


【解决方案1】:

这是所需的输出:

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

【讨论】:

  • 请创建另一个帖子,以便我可以正确回答
  • 我正在尝试,但 Stack 不让我这样做,因为它说我问的太多了...有什么方法可以私下联系您吗?
  • 我编辑了问题以反映我对第二部分的要求,我重新编写了您发布的代码并且几乎有了它,但还没有完全到位。请帮忙,谢谢!
【解决方案2】:

如果日期是字符串更改的唯一内容,您可以拆分字符串以获取日期:

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('/')]

【讨论】:

    【解决方案3】:

    我建议您使用正则表达式,而不是让自己变得困难。如果您不确定,您可以查看正则表达式的工作原理以及它的所有语法。这是一个非常有用的模块。

    【讨论】:

    • Regex 是出了名的不足以解析 HTML。不过,知道它仍然很有用。
    • 只是说研究一种解决方案,而不提供任何代码,在我看来是没有答案的。
    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多