使用正则表达式来检测可能具有撇号的单词,以 ASCII 编码?



在Python中工作,我正在尝试创建一个函数,该函数将股票行情作为字符串接收,并使用从雅虎财经抓取的html数据返回公司名称。我已经让它适用于所有公司,除了一个包含撇号的公司。我检查了 html 代码,发现撇号是这样编码的 - 我很确定它是用 ASCII 编码的。以下是 html 代码的修改版本:

html = '<!DOCTYPE html><html id="atomic" class="NoJs featurephone" lang="en-US"><head prefix="og: http://ogp.me/ns#"><script>window.performance && window.performance.mark && window.performance.mark('PageStart');</script><meta charset="utf-8"/><title>Dick&#x27;s Inc (DKS) Company Profile &amp; Facts'

我想返回的是"迪克的"。我得到的只是"迪克"。我正在使用 re 模块和重新搜索。这是我的代码:

company_name = (re.search(r'(?<=</script><meta charset="utf-8"/><title>)w+', html).group(0))

我试图包含撇号以确保它不会止步于此,但由于这不是 html 代码的一部分,因此它在任何地方都找不到它。我应该使用re.search以外的其他东西吗?我已经研究了 re.findall,但这并不能解决我查找和包含"'"的问题,而是显示为撇号。

确定您不想要Dick's, Inc (DKS)或更多?只是想知道您是否按预期获得全名。要获得Dick's,您需要取消转义您的 HTML,然后更改您的正则表达式。新的将按顺序查找一个或多个单词字符或撇号。

import html
html_string = '<!DOCTYPE html><html id="atomic" class="NoJs featurephone" lang="en-US"><head prefix="og: http://ogp.me/ns#"><script>window.performance && window.performance.mark && window.performance.mark('PageStart');</script><meta charset="utf-8"/><title>Dick&#x27;s Inc (DKS) Company Profile &amp; Facts'
html_string = html.unescape(html_string)
company_name = (re.search(r'(?<=</script><meta charset="utf-8"/><title>)[w']+', html_string).group(0))

结果:

"Dick's"

最新更新