如何用Pandas处理CSV中的反斜杠与引号并添加单引号包裹
解决方案
先修正字符串清理逻辑,找回丢失的'S
你之前的清理代码错误移除了单引号,导致JIMMY'S变成JIMMYS。要只去掉反斜杠和双引号、保留原有的单引号,把正则改成匹配"和\即可:
# 仅移除反斜杠(\)和双引号("),保留单引号(') df = df.replace(r'["\\]', '', regex=True)
处理后\JIMMY'S PALACE"会变成JIMMY'S PALACE,不会丢失'S部分。
用单引号包裹处理后的列值
接下来给每个字符串值加上单引号,避免后续读取报错,有几种实现方式:
1. 批量处理整个DataFrame
用applymap遍历所有元素,只给字符串类型的值加单引号:
df = df.applymap(lambda x: f"'{x}'" if isinstance(x, str) else x)
非字符串类型(比如数字)会保持原样,不会被修改。
2. 针对特定列处理
如果只需要处理某几列,直接遍历目标列操作:
# 替换成你需要处理的列名列表 target_cols = ['your_column_name'] for col in target_cols: df[col] = df[col].apply(lambda x: f"'{x}'" if isinstance(x, str) else x)
3. 快速处理单一字符串列
如果确定某列全是字符串,可以直接拼接单引号:
df['target_col'] = "'" + df['target_col'] + "'"
完整示例
import pandas as pd # 模拟原始数据 data = {'location': ['\\JIMMY\'S PALACE"', '"JIMMY\'S FLOOR"']} df = pd.DataFrame(data) # 清理字符串 df = df.replace(r'["\\]', '', regex=True) # 包裹单引号 df = df.applymap(lambda x: f"'{x}'" if isinstance(x, str) else x) print(df) # 输出: # location # 0 'JIMMY'S PALACE' # 1 'JIMMY'S FLOOR'
处理后导出CSV,这些值会以单引号包裹,有效避免后续读取时的格式报错。
内容的提问来源于stack exchange,提问作者AGUPTA
相关产品推荐
相关产品推荐

