You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python将含特殊字符的CSV数据存入Redis HSET且避免多余转义斜杠?

解决方案

该问题的核心是CSV读取、JSON序列化两个环节的转义逻辑叠加,导致斜杠被重复转义,Redis本身支持任意普通字符串作为键值,无特殊字符存储限制。你可以按以下步骤处理:

  • 第一步:正确读取CSV,禁用自动转义
    使用Python标准库csv模块读取文件时,明确关闭不必要的转义配置,避免读取阶段就给斜杠自动加转义:
    import csv
    
    with open("你的数据文件路径.csv", "r", encoding="utf-8") as f:
        # 按你的文件分隔符指定delimiter,这里是竖线
        reader = csv.DictReader(f, delimiter="|", quoting=csv.QUOTE_MINIMAL, escapechar=None)
        for row in reader:
            # 清理每个字段前后的多余空白
            clean_row = {k.strip(): v.strip() for k, v in row.items() if k.strip()}
            # 取出首列作为Redis HSET的key
            hkey = clean_row.pop("city_name")
    
  • 第二步:序列化后直接写入Redis
    如果你需要存JSON格式的字符串作为值,直接用json.dumps默认配置序列化即可,不要手动做任何转义处理:
    import json
    import redis
    
    # 初始化Redis连接,decode_responses设为True自动处理bytes转字符串
    redis_client = redis.Redis(host="127.0.0.1", port=6379, db=0, decode_responses=True)
    # 序列化处理后的字段数据
    hvalue = json.dumps(clean_row, ensure_ascii=False)
    # 写入Redis
    redis_client.hset("你的哈希表名", hkey, hvalue)
    
  • 特殊情况处理:如果原始CSV已存在转义斜杠,先做字符串清理
    若你的CSV文件中本身已经写入了\\$\\这类预转义的内容,读取后先统一替换多余转义符即可:
    # 示例:把4个连续反斜杠替换为1个,可根据实际多余斜杠数量调整规则
    clean_row["currency"] = clean_row["currency"].replace("\\\\", "\\")
    

验证注意:存入后请直接用redis-cli执行HGET 你的哈希表名 Newyork查看存储结果,不要通过Python打印返回值判断,Python打印字符串时会自动给转义符增加显示用的反斜杠,会造成误判。

内容的提问来源于stack exchange,提问作者shivthedev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:54:00