鱼C论坛

 找回密码
 立即注册
查看: 1894|回复: 5

[已解决]re.findall('正文(.*?)</tbody>', data, re.S)[0]最后[0]表示什么

[复制链接]
发表于 2023-6-21 22:58:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
toc_url_list = []
toc_block = re.findall('正文(.*?)</tbody>', data, re.S)[0]
toc_url = re.findall('href="(.*?)"', toc_block, re.S)
for url in toc_url:
      toc_url_list.append(start_url + url)
print(toc_block)
运行代码后,标红这行代码,去掉最后[0]横着显示。不去[0],竖着显示。大神帮解释下,谢谢了
最佳答案
2023-6-21 23:06:53
这行代码中使用了Python内置的re(正则表达式)模块的findall函数,在指定范围内,查找所有匹配某个特定正则表达式的字符串,并将它们以列表的形式返回。

具体来说,这行代码的作用是从字符串data中匹配出包含字符串“正文”和</tbody>之间的部分,然后通过re.findall函数提取其中所有以“href=”开头的字符串,即链接URL。所以得到的结果是一个包含多个URL链接的列表toc_url。

如果不去掉最后的[0],输出结果将以包含所有匹配结果的列表形式展示,每个匹配结果为列表中的一个元素。如果去掉最后的[0],输出结果将只展示第一个匹配结果,以单个字符串的形式展示。

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-21 23:06:53 | 显示全部楼层    本楼为最佳答案   
这行代码中使用了Python内置的re(正则表达式)模块的findall函数,在指定范围内,查找所有匹配某个特定正则表达式的字符串,并将它们以列表的形式返回。

具体来说,这行代码的作用是从字符串data中匹配出包含字符串“正文”和</tbody>之间的部分,然后通过re.findall函数提取其中所有以“href=”开头的字符串,即链接URL。所以得到的结果是一个包含多个URL链接的列表toc_url。

如果不去掉最后的[0],输出结果将以包含所有匹配结果的列表形式展示,每个匹配结果为列表中的一个元素。如果去掉最后的[0],输出结果将只展示第一个匹配结果,以单个字符串的形式展示。

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-21 23:07:11 | 显示全部楼层
从你提供的Python代码片段来看,这里的  [0]  是Python中列表索引的概念。

在Python中,列表是一种有序的集合,可以通过索引来访问其中的每一个元素。索引是从0开始的。因此, [0]  就是访问列表中的第一个元素。

代码  re.findall('正文(.*?)</tbody>', data, re.S)  是使用正则表达式在数据  data  中查找所有匹配  '正文(.*?)</tbody>'  模式的字符串。 re.findall  函数会返回一个列表,其中包含所有的匹配项。因此, [0]  就是获取这个结果列表中的第一个匹配项。

如果你去掉  [0] ,那么  re.findall  返回的就是一个包含所有匹配项的列表,而不仅仅是第一个匹配项。

至于你提到的横着显示和竖着显示,我想这可能与你使用的环境或者打印方式有关。如果你直接打印一个列表,通常每个元素会占据一行,看起来像是竖着显示。而如果你打印列表的单个元素,那就会看起来像是横着显示。

希望这能解答你的问题,如果还有其他疑问,欢迎继续提问!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-21 23:13:57 | 显示全部楼层
sfqxx 发表于 2023-6-21 23:06
这行代码中使用了Python内置的re(正则表达式)模块的findall函数,在指定范围内,查找所有匹配某个特定正 ...


az
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2023-6-22 20:46:58 | 显示全部楼层
这段代码中标红的一行是使用正则表达式(re模块)在字符串 data 中查找 <tbody> 标签之前的内容,并提取其中以 href 开头的URL链接。 '正文(.*?)</tbody>' 作为正则表达式的模式,表示匹配以 '正文' 开始,随后是任意字符(非贪婪模式),并以 '</tbody>' 结束的部分。

通过使用 re.findall() 函数,可以获取到所有符合模式的结果,这些结果被存储在 toc_url 列表中。接下来,代码将遍历 toc_url 列表中的每个URL,并添加一个完整的URL路径(由 start_url 和 URL半链接构成)到 toc_url_list 列表中。

如果去掉标红的该行代码 [0],则不仅仅提取第一个匹配的URL链接,而是提取所有匹配的URL链接。因此,最终的输出列表 toc_url_list 将包含所有在 toc_block 中找到的URL链接。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-24 10:22:20 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 03:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表