本文介绍如何在 pandas 中使用正则表达式高效地将字段内连续出现的多个竖线 `|` 替换为单个竖线,解决分隔符冗余问题。
在数据清洗过程中,常遇到因格式异常或拼接错误导致的重复分隔符问题,例如字符串 '10SGD01AA103||||||10SGD01AA105
' 中存在多个连续竖线 |。目标是将其规范化为 '10SGD01AA103|10SGD01AA105' ——即把两个及以上连续的 | 替换为单个 |。
正确做法是使用 str.replace() 配合正则表达式 r'\|+':
import pandas as pd
df = pd.DataFrame({'code': ['10SGD01AA103||||||10SGD01AA105||||||10SGD01AA111']})
df['code'] = df['code'].str.replace(r'\|+', '|', regex=True)
print(df['code'].iloc[0])
# 输出:10SGD01AA103|10SGD01AA105|10SGD01AA111✅ 关键说明:
⚠️ 常见错误分析:
? 扩展提示:若需同时处理首尾冗余分隔符,可链式调用:
df['code'] = (df['code']
.str.replace(r'\|+', '|', regex=True)
.str.strip('|')) # 去除开头和结尾的 |该方法简洁、高效,适用于大规模 DataFrame 的批量清洗,是正则处理重复分隔符的标准实践。