Python中pandas DataFrame列链接删除www子串时误删内容如何解决
问题原因
pandas的Series.str.replace()方法默认启用正则匹配模式,你传入的'www.'里的.在正则语法中代表匹配任意单个字符,因此不仅会匹配域名中的www.,也会匹配到文件名里www后面跟任意字符的片段(比如示例中的wwwW、wwwX),导致误删。
解决方法
这里给不同场景下的修复方案:
- 普通场景直接关闭正则匹配,按字面字符串替换
给方法加regex=False参数,此时'www.'会被当做普通字符串处理,只会匹配到字面的www.片段:df_bucket['Uri'].str.replace('www.', '', regex=False) - 需要保留正则能力的场景,转义特殊字符
把正则里有特殊含义的.转义为普通字面量即可:df_bucket['Uri'].str.replace(r'www\.', '') - 要求完全避免误删的高精度场景,限定匹配位置
用正则断言限定只匹配协议头后紧跟的www.,完全不会影响路径、文件名中的内容:df_bucket['Uri'].str.replace(r'(?<=://)www\.', '')
内容的提问来源于stack exchange,提问作者Kamal Garg
相关产品推荐
相关产品推荐

