Pandas筛选含"C("的SMILES列条目报错,该如何修复?
问题修复方案
报错原因很直接:str.contains()默认采用正则表达式匹配逻辑,而(是正则里的特殊元字符,用来标记子模式的起始,你写的C(会被解析成一个未闭合的子模式,所以触发了"missing ), unterminated subpattern"错误。
有两种简单的修复方式:
方式1:转义正则特殊字符
把括号转义成普通字符,用Python原始字符串写法更方便,避免双反斜杠的繁琐:
newdf2 = df[df['SMILES'].str.contains(r'C\(')].reset_index(drop=True)
方式2:关闭正则匹配模式
如果你只是要匹配固定的C(字符串,不需要正则的复杂匹配逻辑,直接设置regex=False即可:
newdf2 = df[df['SMILES'].str.contains('C(', regex=False)].reset_index(drop=True)
两种方法都能正确筛选出SMILES中包含C(的化学品,第二种更直观,适合这种简单的固定字符串匹配场景。
内容的提问来源于stack exchange,提问作者user22233907
相关产品推荐
相关产品推荐

