如何在Pandas中仅替换"后紧跟的空格而不删除"本身
错误原因
原有正则r'"(\s)'会将"和后续空白作为整体匹配,替换为空时会同时删除两个部分。
正确实现
方法1:正向后视断言(推荐)
仅匹配"之后的空白,不会消耗"本身,直接删除空白即可:
df['raw_data'] = df['raw_data'].str.replace(r'(?<=")\s+', '', regex=True)
- 正则逻辑:
(?<=")限定匹配位置的前一个内容必须是",\s+匹配1个或多个空白字符 - Pandas 1.2及更高版本需显式传入
regex=True避免参数警告
方法2:捕获组保留"
通过捕获组保留匹配到的",仅删除后续空白,兼容性更强:
df['raw_data'] = df['raw_data'].str.replace(r'(")\s+', r'\1', regex=True)
- 正则逻辑:
(")是第一个捕获组,替换时用\1引用该组内容,实现保留"的效果
效果示例
原文本:测试内容" 带空格" 第二个空格
替换后:测试内容"带空格"第二个空格
内容的提问来源于stack exchange,提问作者gloders
相关产品推荐
相关产品推荐

