Python调用re.search正则匹配始终返回NONE问题咨询
问题原因
你的代码里存在两个可直接导致re.search返回None的问题:
- 核心错误:
re.search的第二个匹配目标参数写的是str(str),这是把Python内置类型str本身转成字符串,完全没有使用你传入函数的文本参数txt,匹配目标不符合预期自然找不到结果。 - 正则写法存在隐患:未加原始字符串标识的正则容易出现转义异常,且
.*贪婪匹配、前后写死的空格在遇到空白字符不一致的场景时也会匹配失败,建议优化增加鲁棒性。
修复后的可运行代码
import re from typing import Tuple, List from collections import Counter from glob import glob def start_project(txt: str) -> Tuple[int, int]: print("before re.search") # 修正匹配目标为传入的txt参数,同时优化正则写法 x = re.search(r"\*\*\* START OF THE PROJECT GUTENBERG EBOOK .*?\*\*\*", txt) print("this is the new output: ", x) # 可根据需求补充返回值逻辑,此处仅做匹配修复示例 return (0, 0) start_project("*** START OF THE PROJECT GUTENBERG EBOOK THE ILIAD ***")
修复后运行代码会正常输出匹配到的re.Match对象。
内容的提问来源于stack exchange,提问作者vynabhnnqwxleicntw
相关产品推荐
相关产品推荐

