如何用Python移除字符串中包含None的键值对?
移除字符串中所有"键=None"格式片段的Python实现
原始需求
给定字符串:
my_str = "energie='E', Offre=None, segment='X', mode_de_paiement=None, statut_contrat='CC', statut_fel=None, fmr=None, payeur_divergent=None, type_de_conducteur=None, compte_duale_rv=None, plan_mensualisation=None, adm=None, multisite=None, occurrence='4'"
需要移除所有键=None格式的片段,最终保留有效键值对。
方法1:分割过滤拼接法(推荐,逻辑清晰)
把字符串拆分成单个键值对,过滤掉包含=None的项,再重新拼接成结果字符串。
代码实现:
my_str = "energie='E', Offre=None, segment='X', mode_de_paiement=None, statut_contrat='CC', statut_fel=None, fmr=None, payeur_divergent=None, type_de_conducteur=None, compte_duale_rv=None, plan_mensualisation=None, adm=None, multisite=None, occurrence='4'" # 按", "分割成独立的键值对列表 key_value_pairs = my_str.split(', ') # 过滤掉包含"=None"的项 filtered_pairs = [pair for pair in key_value_pairs if '=None' not in pair] # 用", "拼接回字符串 result = ', '.join(filtered_pairs) print(result) # 输出:energie='E', segment='X', statut_contrat='CC', occurrence='4'
方法2:正则表达式替换法(简洁高效)
用正则匹配所有键=None的片段(包括其前后的空格和后续逗号),直接替换为空字符串。
代码实现:
import re my_str = "energie='E', Offre=None, segment='X', mode_de_paiement=None, statut_contrat='CC', statut_fel=None, fmr=None, payeur_divergent=None, type_de_conducteur=None, compte_duale_rv=None, plan_mensualisation=None, adm=None, multisite=None, occurrence='4'" # 匹配所有"键=None"格式的片段,包括前面的空格和后面的", " result = re.sub(r'\s*\w+=\w+None(?:, )?', '', my_str) # 清理可能残留的末尾逗号 result = re.sub(r',\s*$', '', result) print(result) # 输出:energie='E', segment='X', statut_contrat='CC', occurrence='4'
注:你提供的示例结果中缺少了segment='X',这不符合需求逻辑(该片段不属于"键=None"格式),上述代码会保留所有非None的有效键值对。
内容的提问来源于stack exchange,提问作者kakdim
相关产品推荐
相关产品推荐

