Python正则报TypeError: 'str' object is not callable排查
报错原因
触发TypeError: 'str' object is not callable的核心原因是对正则匹配Match对象的成员类型认知错误:
m.string是Match对象的属性,存储的是执行匹配操作时传入的原始待匹配字符串,本身是字符串类型,直接访问即可,不需要加()进行调用- 你写的
m.string()相当于把字符串值当作函数执行,自然会抛出"字符串对象不可调用"的类型错误
另外原始代码还存在Python语法层面的缩进问题:定义print_match函数后,函数内部的逻辑块没有做缩进,直接运行会先触发缩进错误,修复时需要一并调整。
修复方法
只需要做两处调整:
- 给
print_match函数内部的所有逻辑补充4空格缩进,符合Python语法要求 - 把
m.string()的调用括号去掉,直接访问m.string属性即可
修复后可运行的完整代码
import re p = re.compile("ca.e") def print_match(m): if m: print("m.group():", m.group()) print("m.string:", m.string) print("m.start():", m.start()) print("m.end():", m.end()) print("m.span():", m.span()) else: print("No Match") m = p.match("case") print_match(m)
运行输出结果
m.group(): case m.string: case m.start(): 0 m.end(): 4 m.span(): (0, 4)
内容的提问来源于stack exchange,提问作者adlerrian
相关产品推荐
相关产品推荐

