如何在Python中删除字典内的多余无效字符(如\u20)
Python字典\u20无效字符清洗实现方法
核心逻辑
- \u20是Unicode空格类字符,单条字符串直接调用
replace('\u20', '')即可完成清理 - 针对列表嵌套字典、字典值包含字符串列表的多层结构,用递归函数逐层处理所有字符串类型值即可适配
实现代码
首先修正你给出的原始示例数据的语法问题(原示例存在缺单引号、缺逗号的语法错误),再执行清洗:
# 修正语法后的原始数据 raw_data = [ { 'title': 'title1', 'tags': ['data mining\u20', 'data mining', 'test\u20', 'data mining', 'test1'] }, { 'title': 'title2', 'tags': ['title2', 'data mining\u20'] } ] # 通用递归清洗函数,支持任意嵌套层级的列表/字典结构 def clean_value(value): if isinstance(value, str): # 替换\u20,额外加strip可同时清理首尾多余空白字符 return value.replace('\u20', '').strip() elif isinstance(value, list): return [clean_value(item) for item in value] elif isinstance(value, dict): return {key: clean_value(val) for key, val in value.items()} # 其他数据类型直接返回 return value # 执行清洗 processed_data = clean_value(raw_data) # 打印验证结果 print(processed_data)
输出结果
运行后得到的清洗后数据如下:
[ {'title': 'title1', 'tags': ['data mining', 'data mining', 'test', 'data mining', 'test1']}, {'title': 'title2', 'tags': ['title2', 'data mining']} ]
如果你需要把title2替换为test这类额外过滤逻辑,可以在字符串处理分支添加对应判断规则即可。
扩展优化
如果需要同时清理其他常见无效Unicode字符(如零宽空格\u200b、字节顺序标记\ufeff等),可以把字符串处理逻辑替换为正则匹配:
import re def clean_value(value): if isinstance(value, str): return re.sub(r'[\u200b-\u200f\ufeff\u20]', '', value).strip() # 其余逻辑保持不变
内容的提问来源于stack exchange,提问作者user12217822
相关产品推荐
相关产品推荐

