You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何解决按指定起止字符串提取爬取文本内容返回空的问题

问题原因

  • 默认情况下Python正则的.元字符不匹配换行符(也就是你文本中的\r\n),你的两个匹配关键词中间存在多行换行,所以.*在匹配到第一处换行就会中断,无法匹配到后续的元和四年,返回空列表。
  • 你看到的\r\n、\u3000是Python字符串的标准转义表示,实际存储的是对应的回车换行、全角空格字符,不存在额外的反斜杠干扰,不需要提前删除。

解决方案

方案1:正则匹配(加换行匹配标志)

给正则添加re.S(别名re.DOTALL)标志,让.可以匹配包括换行在内的所有字符,建议搭配非贪婪匹配符?避免过度匹配:

import re
# 加r前缀表示正则原始字符串,re.S开启换行匹配
res = re.findall(r'唐會要卷二.*?元和四年', text, flags=re.S)
if res:
    print(res[0])

输出结果和你期望的完全一致。

方案2:字符串切片(更简单,无正则坑)

如果起止字符串是固定的,直接用索引切片实现更高效,不需要引入正则:

start = text.find("唐會要卷二")
end = text.find("元和四年") + len("元和四年")
if start != -1 and end != -1:
    res = text[start:end]
    print(res)

内容的提问来源于stack exchange,提问作者Kevin Hong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:54:08