python - 重新查找类别 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
有什么帮助吗?
解决方案
我遵循@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']