如何将文本字符串列表转换为客户字典列表
如何将文本字符串列表转换为客户字典列表
我完全懂你现在的头疼——本来想把这个零散的文本列表转换成规整的客户字典列表,结果折腾半天出来的东西完全没法用。别着急,咱们先看看你之前的问题出在哪,再一步步搞定它。
首先说你之前的思路误区:你把整个列表转成字符串再去拆分,这会把列表自带的[、]、'这些符号都混进内容里,自然拆出来的键值对全是乱的。正确的思路应该是按客户分组处理——每个客户的信息从Customer开头的条目开始,到下一个Customer前结束,把每组信息单独做成一个字典,最后汇总成列表。
下面是具体的解决步骤和代码:
第一步:先清理原始数据
首先把每个条目的换行符、末尾多余的逗号去掉,让数据更干净:
service_notes = ['Customer AliceJenkins\n', 'Car Honda\n', 'Service Fifty_Thousand\n','Customer BobElliot\n', 'Car Toyota, Rav4, Silver, 2018\n', 'Service Thirty_Thousand,\n', 'Customer CharlieWallace\n', 'Car Ford\n', 'Service Ten_Thousand\n'] # 清理每个条目:去掉换行、首尾空白,以及末尾的逗号 cleaned_notes = [] for entry in service_notes: cleaned_entry = entry.strip() # 去掉前后的换行和空格 if cleaned_entry.endswith(','): cleaned_entry = cleaned_entry[:-1] # 去掉末尾多余的逗号 cleaned_notes.append(cleaned_entry)
第二步:分组生成客户字典列表
接下来遍历清理后的列表,遇到Customer就开始新的客户字典,把后续的Car、Service信息都塞进这个字典里,最后把所有客户字典收集到一个列表中:
customers_list = [] current_customer = {} for line in cleaned_notes: # 按第一个空格分割键和值(因为值里可能包含空格,不能全部分割) key, value = line.split(' ', 1) if key == 'Customer': # 如果是新客户,先把之前的客户(如果存在)加入列表 if current_customer: customers_list.append(current_customer) # 初始化新的客户字典 current_customer = {'Customer': value} else: # 将Car或Service的信息添加到当前客户字典 current_customer[key] = value # 别忘了把最后一个客户字典加入列表 if current_customer: customers_list.append(current_customer) # 打印结果 print(customers_list)
最终运行结果
执行上面的代码后,你会得到一个规整的客户字典列表:
[ {'Customer': 'AliceJenkins', 'Car': 'Honda', 'Service': 'Fifty_Thousand'}, {'Customer': 'BobElliot', 'Car': 'Toyota, Rav4, Silver, 2018', 'Service': 'Thirty_Thousand'}, {'Customer': 'CharlieWallace', 'Car': 'Ford', 'Service': 'Ten_Thousand'} ]
这样每个客户的信息都单独存在一个字典里,完全符合你的需求啦~
备注:内容来源于stack exchange,提问作者Alari Koel
相关产品推荐
相关产品推荐

