如何从Python嵌套字典的ORG键对应值中移除特殊字符
实现方案
你现在的字典是两层嵌套结构,外层键是文件名,值是内层属性字典,仅需要处理内层字典中ORG键对应的字符串列表,所以可以通过逐层遍历+字符串清理实现,以下是可直接运行的示例:
1. 依赖导入与清理规则定义
首先用正则实现特殊字符清理逻辑,你可以按需调整正则匹配规则来决定保留哪些字符:
import re # 原字典 data = { 'file1.txt': {'address': [], 'ORG': []}, 'file2.txt': {'address': [], 'ORG': ['DEF Pvt. Ltd','One Solutions (Asia) Limited' ]} } # 特殊字符清理函数:默认保留大小写字母、数字、空格、英文句号,其余字符全部移除 def clean_org_str(s): return re.sub(r'[^a-zA-Z0-9\s.]', '', s)
2. 两种实现方式可选
原地修改原字典
直接遍历修改原字典的内容,适合不需要保留原始数据的场景:
for inner_dict in data.values(): inner_dict['ORG'] = [clean_org_str(item) for item in inner_dict['ORG']]
生成新字典(不改动原始数据)
用嵌套字典推导式生成全新的字典,和你熟悉的单层字典推导式逻辑一致,仅增加了内层属性的处理:
new_data = { file_name: {**inner_dict, 'ORG': [clean_org_str(item) for item in inner_dict['ORG']]} for file_name, inner_dict in data.items() }
处理结果示例
以上代码运行后,file2.txt对应的ORG列表会被清理为:
['DEF Pvt. Ltd', 'One Solutions Asia Limited']
如果需要调整保留的字符,仅需要修改clean_org_str函数中正则的匹配范围即可,比如需要额外保留横线,就把正则规则改为r'[^a-zA-Z0-9\s.-]'。
内容的提问来源于stack exchange,提问作者User 23
相关产品推荐
相关产品推荐

