如何使用Python移除爬取生成的JSON文件中“类多余特殊字符
解决方法
你遇到的\u201c、\u201d是Unicode编码的左右双引号,属于特殊Unicode字符,如果你需要移除这类字符,或者替换为普通半角标点,可使用以下两种方案:
方案1:读取JSON后定向清理指定特殊字符
直接用Python内置json模块读取文件,对字符串字段做定向替换,适合需要保留其他非ASCII字符的场景:
import json # 读取原始JSON文件,路径替换为你自己的文件路径 with open("raw_data.json", "r", encoding="utf-8") as f: data = json.load(f) def clean_text(text): # 可自行补充不需要的特殊字符到列表中 unwanted_chars = [ "\u201c", # 左双引号 "\u201d", # 右双引号 "\u2018", # 左单引号 "\u2019", # 右单引号 "\xa0", # 非断空白字符 ] for char in unwanted_chars: text = text.replace(char, "") # 如果需要替换为普通标点,把上方的""改成对应字符即可,比如替换引号就写'"' return text # 遍历数据清理,根据你的JSON结构调整遍历逻辑 for item in data: if "quote_text" in item: item["quote_text"] = clean_text(item["quote_text"]) # 其他需要清理的字段可在此处补充逻辑 # 保存清理后的JSON with open("cleaned_data.json", "w", encoding="utf-8") as f: # ensure_ascii=False 可避免输出的JSON再次出现\uXXXX格式的转义字符 json.dump(data, f, ensure_ascii=False, indent=2)
方案2:正则批量清理所有非ASCII字符
如果你的业务场景只需要保留英文字母、数字、普通半角标点,可直接用正则过滤所有非ASCII范围的字符:
import re import json with open("raw_data.json", "r", encoding="utf-8") as f: data = json.load(f) def clean_text_regex(text): # 仅保留ASCII范围内的可见字符,可根据需求调整正则规则 return re.sub(r'[^\x00-\x7F]+', '', text) for item in data: item["quote_text"] = clean_text_regex(item["quote_text"]) with open("cleaned_data.json", "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=2)
注意事项
- 读写JSON文件时必须指定
encoding="utf-8",避免编码混乱生成新的转义字符 - 写入JSON时添加
ensure_ascii=False参数,可让文件直接存储UTF-8字符,不会自动转义为\uXXXX格式
内容的提问来源于stack exchange,提问作者Sherlock_oms
相关产品推荐
相关产品推荐

