python - 正则表达式:检查字符串是否包含非白名单字符
问题描述
我想检查一个字符串是否包含不在白名单中的字符,如果确实如此,则必须丢弃该字符串。
白名单目前abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!?.,
和可能是其他人。
从字符串(如提供的字符串)加载白名单对我来说非常重要,因为我以后可能需要扩展白名单。
解决方案
你不需要正则表达式。只需检查是否有任何字符不在白名单中:
whitelist_set = set(whitelist)
if any(c not in whitelist_set for c in my_string):
#discard
正如@jpp 在评论中提到的那样,首先将白名单转换为 a 更有效,set
因为查找将是O(1)
而不是O(n)
for list
。
推荐阅读
- csv - Spark Write csv - 时间戳格式问题
- css - 如何更改 ionic 3 选项卡的最大宽度?
- java - Hibernate 异常:@OneToMany 或 @ManyToMany 针对未映射的类 [java.util.List]
- c++ - 为什么按值传递 QStringView 比引用 const 更快?
- amazon-ec2 - 分配给节点辅助接口的 kubernetes 服务外部 IP
- python - Pyinstaller Qt5 应用程序无法在 Windows 10 中启动
- kubernetes - 有没有办法将 openebs 副本限制到 k8s 集群中的特定节点?
- c# - 无法在 http://localhost 上启动驱动程序服务
- multithreading - boost::python 线程通过 python 暂停和恢复 c++ 函数
- python - 有什么方法可以将 seaborn 中的颜色条(cbar)更改为图例(对于二进制热图)?