首页 > 解决方案 > 重新查找类别 S 和 P 的错误转义

问题描述

我正在尝试从字符串中删除所有标点符号和特殊字符,包括数字,但出现错误:error: bad escape \p at position 2

这是否意味着python的正则表达式无法识别\p{S}\p{P}

代码是:

name = "URL-dsds diasa:dksdjsk dskdjs_dskjdks 23232 dsds32 dskdjskds&dsjdsjdhs fddjfd%djshdhjs kdjs¤dskjds öfdfdjfkdj"
re.findall(r'[^\p{P}\p{S}\s\d]+', name.lower())

我希望输出与 regex101 突出显示的输出相同: https ://regex101.com/r/HJZAUU/1

有什么帮助吗?

标签: pythonregexasciifindall

解决方案


我遵循@WiktorStribiżew 评论,使用 PyPi 正则表达式,因为它支持 Unicode 类别类。所以我只是做了:

pip install regex
import regex as re
name = "URL-dsds diasa:dksdjsk dskdjs_dskjdks 23232 dsds32 dskdjskds&dsjdsjdhs fddjfd%djshdhjs kdjs¤dskjds öfdfdjfkdj"
re.findall(r'[^\p{P}\p{S}\s\d]+', name.lower())

我得到输出:

['url','dsds','diasa','dksdjsk','dskdjs','dskjdks','dsds','dskdjskds','dsjdsjdhs','fddjfd','djshdhjs','kdjs',' dskjds','öfdfdjfkdj']


推荐阅读