Python正则匹配连续重复字母报错,求正确实现脚本
解决方法
错误原因
你之前的代码里用了\a、\c这类写法,这些是正则表达式中的特殊转义字符(比如\b代表单词边界,\a是响铃控制符),并不是用来匹配字母a、c本身的。而\c不属于合法的正则转义序列,所以触发了bad escape \c的错误。
正确实现方式
推荐用正则反向引用的写法,无需逐个枚举字母,简洁高效:
doublesigns = dataset[dataset["columnA"].str.contains(r"([a-zA-Z])\1{2,}", na=False)]
r""表示原始字符串,避免Python对正则中的\进行额外转义([a-zA-Z])捕获任意一个大小写字母\1引用刚才捕获的那个字母{2,}表示该字母至少再重复2次,加上捕获的1次,就是3次及以上连续重复
如果非要逐个字母枚举(不推荐,太繁琐),直接写字母本身即可,不需要加转义:
doublesigns = dataset[dataset["columnA"].str.contains(r"a{3}|b{3}|c{3}|d{3}|e{3}|f{3}|g{3}|h{3}|i{3}|j{3}|k{3}|l{3}|m{3}|n{3}|o{3}|p{3}|q{3}|r{3}|s{3}|t{3}|u{3}|v{3}|w{3}|x{3}|y{3}|z{3}|A{3}|B{3}|C{3}|D{3}|E{3}|F{3}|G{3}|H{3}|I{3}|J{3}|K{3}|L{3}|M{3}|N{3}|O{3}|P{3}|Q{3}|R{3}|S{3}|T{3}|U{3}|V{3}|W{3}|X{3}|Y{3}|Z{3}", na=False)]
内容的提问来源于stack exchange,提问作者marita
相关产品推荐
相关产品推荐

