pandas DataFrame使用str.replace删除括号内容残留空括号如何解决
问题原因
pandas的Series.str.replace()方法默认开启正则匹配模式,小括号()在正则语法中属于分组特殊字符,你直接写入(penatibus/magnis)作为匹配规则时,只会匹配到括号内部的内容,括号本身不会被命中,因此删除后会残留空括号。
解决方法
方法1:匹配固定字符串时关闭正则模式
如果你只需要删除指定的括号内容,给方法添加regex=False参数即可强制按普通字符串匹配:
# 单个指定内容删除 df["Description"] = df["Description"].str.replace("(penatibus/magnis)", "", regex=False) # 多个指定内容删除可以链式调用 df["Description"] = df["Description"].str.replace("(penatibus/magnis)", "", regex=False)\ .str.replace("(ut/tellus/elementum)", "", regex=False)
方法2:用正则批量删除所有括号及内部内容
如果需要删除该列所有格式为(任意内容)的片段,直接写通用正则规则即可,不需要逐个指定要删除的内容:
import pandas as pd # 正则含义:\(匹配左括号,.*?非贪婪匹配括号内任意内容,\)匹配右括号 # 末尾加str.strip()用于清除删除后残留的前后多余空格 df["Description"] = df["Description"].str.replace(r"\(.*?\)", "", regex=True).str.strip()
执行上述任意符合你需求的方法后,即可得到预期的输出结果。
内容的提问来源于stack exchange,提问作者user16486968
相关产品推荐
相关产品推荐

