Python使用re.findall提取指定特征拉丁词返回结果异常如何解决
代码存在的核心问题
- 正则规则匹配逻辑错误:你当前写的正则
'tion|ex|ph|ost'只会提取文本里的这几个特征子串本身,不会捕获包含这些子串的完整单词,比如输入里的functions只会匹配到子串tion,不会拿到整个functions单词。 - 返回值格式错误:
re.findall本身的返回结果就是列表类型,你额外套了list()再加一层方括号,会生成嵌套列表,和预期的单层单词列表完全不符。 - 关于你提到的NoneType错误:大概率是你调用函数时传入的
text参数是None而非字符串类型,re.findall接收None作为输入时会抛出类型错误。
修正后可正常运行的代码
import re def latin_ish_words(text): # 先校验输入类型,避免None触发报错 if not isinstance(text, str): return [] # 正则匹配包含指定特征的完整单词,忽略大小写 return re.findall(r'\b\w*(?:tion|ex|ph|ost)\w*\b', text, flags=re.I)
运行验证结果
- 调用
latin_ish_words("This works well")返回[],符合预期 - 调用
latin_ish_words("This functions as expected")返回['functions', 'expected'],符合预期
内容的提问来源于stack exchange,提问作者user16759613
相关产品推荐
相关产品推荐

