如何正确创建Python正则以允许字母数字、逗号、点、空格?解决语法错误
解决Python中保留指定字符的语法错误问题
你这段代码报错的核心原因是误用了JavaScript的正则语法,Python里的字符串处理逻辑和JS不一样:
- Python的
str.replace()方法只能替换固定字符串,不支持正则表达式匹配 - Python的正则表达式不是用
/.../g这种格式定义的,也不需要g来声明全局替换(re.sub()默认就是全局替换)
正确实现方式(正则版)
需要导入re模块,用re.sub()来完成正则替换:
import re strx = 'test, 22222 @% te-st test test' # 匹配所有非允许的字符并替换为空 result = re.sub(r'[^A-Za-z0-9, .]', '', strx) print(result)
输出结果:test, 22222 test test test
备选实现方式(非正则版)
如果不想依赖正则模块,也可以用字符串推导式手动过滤字符:
strx = 'test, 22222 @% te-st test test' allowed_chars = set('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789, .') result = ''.join([char for char in strx if char in allowed_chars]) print(result)
输出结果和正则版一致。
内容的提问来源于stack exchange,提问作者Nancy Moore
相关产品推荐
相关产品推荐

