gpt4 book ai didi

python - 正则表达式不返回结果

转载 作者:行者123 更新时间:2023-12-01 07:14:36 34 4
gpt4 key购买 nike

我编写了一个正则表达式并在 regex101.com 中对其进行了测试,但是当我在代码中实现它时,我没有返回任何值,而且我不知道为什么。

我正在抓取一个 HTML 文档(特别是 RSS 提要),并在同一程序中使用其他正则表达式来处理该 HTML 文档,但不是这个特定的!我只是不知所措,因为它在 regex101.com 中工作(并且在我可以访问的另一个 Python 程序中,该程序是专门为测试正则表达式而开发的。我需要抓取文章的标题、描述和日期/时间)已发布。标题和日期/时间有效(下面的标题工作示例),但我无法打印描述(变量“片段”)。

我尝试过的:

#There's a 'download' function earlier on which downloads the RSS page to a file
text_in = download(url='https://www.theverge.com/rss/index.xml', target_filename = 'downloadtheverge')
text_in = open('downloadtheverge.xhtml', 'r', encoding="utf8").read()

snippetresults = sorted
(set(findall(r'<p\sid=\"[A-Za-z0-9]*\">([A-Za-z0-9\s\-\—\:\/\,\’\'\‘\?\!\.]*\s?)<\/p>', text_in)))
for snippets in snippetresults:
print(snippets)

搜索内容的示例:

<p id="BjKuOh">Only a single key change isn’t being reversed: YouTube will actually verify that channels are authentic, whereas in the past it seemingly has not thoroughly taken this very obvious step.</p>

从 regex101.com 上的正则表达式返回的内容:

“只有一个关键的变化不会被逆转:YouTube 实际上会验证 channel 的真实性,而在过去,它似乎没有彻底采取这一非常明显的步骤。”

什么有效:

titlesresults = sorted
(set(findall(r'<title>([A-Za-z0-9\s\-\—\:\/\,\’\'\‘\?\!\.]+\s?)<\/title>', text_in)))
for titles in titlesresults:
print(titles)

同样的格式,将 HTML 文档中的标题返回到 shell 窗口,如下所示:Beats 耳机将获得与 AirPods 相同的 iOS 13.1 音频共享功能如果您玩 Fortnite 或 PUBG Mobile 等,请不要更新到 iOS 13.0

然而,当我使用“片段”在程序中运行它时,shell 窗口什么也不返回...任何帮助将不胜感激!

最佳答案

这不起作用:

from re import findall
from urllib import request

text_in = request.urlopen(url='https://www.theverge.com/rss/index.xml').read().decode()

snippetresults = sorted(set(findall(r'<p\sid=\"[A-Za-z0-9]*\">([A-Za-z0-9\s\-\—\:\/\,\’\'\‘\?\!\.]*\s?)<\/p>', text_in)))
for snippets in snippetresults:
print(snippets)

但是确实如此(注意 html 实体):

from re import findall
from urllib import request

text_in = request.urlopen(url='https://www.theverge.com/rss/index.xml').read().decode()

snippetresults = sorted(set(findall(r'&lt;p\sid=\"[A-Za-z0-9]*\"&gt;([A-Za-z0-9\s\-\—\:\/\,\’\'\‘\?\!\.]*\s?)&lt;\/p&gt;', text_in)))
for snippets in snippetresults:
print(snippets)

关于python - 正则表达式不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58039713/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com