使用re.findall()提取A-Z字母时触发TypeError的技术求助
解决re.findall()抛出TypeError的问题
嘿,我一眼就看出问题出在哪啦!你报错的原因很直接:re.findall() 方法要求第二个参数必须是字符串或者字节类对象,但你这里传入的 val 是整数 2,完全不符合要求,所以才会抛出 TypeError: expected string or bytes-like object 这个错误。
修复方案其实超简单:
只需要把整数 val 转换成字符串类型再传给 re.findall() 就行啦,有两种常见的写法:
写法一:直接在传参时转换
import re key, val = ' ', 2 self._l[key] = re.findall(r"[A-Z]+", str(val))
写法二:先转换val再使用
import re key, val = ' ', 2 val_str = str(val) self._l[key] = re.findall(r"[A-Z]+", val_str)
不过这里要提醒你一下哦:因为 val 是数字2,转换成字符串后是 "2",里面根本没有A-Z的字母,所以最终 re.findall() 返回的会是一个空列表 []。如果你的实际需求里 val 有时候会包含大写字母,那这个转换就没问题;但如果val本来就不该是数字,那你得先检查一下为什么val会被赋值成整数,从源头修正输入类型~
内容的提问来源于stack exchange,提问作者Edward Zion Saji
相关产品推荐
相关产品推荐

