今天用正则过滤一段采集过来的内容中的超链接,出现这个报错
expected string or bytes-like object
这个报错的意思是,参数类型不符合要求,要求为string或者bytes-like对象。
这里来重新复习下re.sub的用法
看官方源码:
def sub(pattern, repl, string, count=0, flags=0): """Return the string obtained by replacing the leftmost non-overlapping occurrences of the pattern in string by the replacement repl. repl can be either a string or a callable; if a string, backslash escapes in it are processed. If it is a callable, it's passed the Match object and must return a replacement string to be used.""" return _compile(pattern, flags).sub(repl, string, count)
一共有五个参数,其中最重要的四个参数,我们简单了解一下。
pattern为匹配用的正则表达式
repl为要替换的内容
string要替换的目标,原始字符串
count为最大替换次数,可以不填。
有两种写法:
1、re.sub(pattern,repl,string,count)
如果是这种写法,那就就是你的第三个参数string的类型不对。
可以简单修改为str(string)这样。当然,也要具体看你的数据类型以便于作出修正了。
2、也可以写作pattern.sub(repl,string,count)这样
同样也是你提供的string这个参数类型不符合。
标签: