如何解析字典内文本,将带冒号内容设为key,其余内容为对应value
解决方法
核心思路是放弃用逗号/换行符拆分的方案,直接根据key以冒号结尾的特征做匹配拆分,完全不会受value内部逗号的影响。
实现代码
import re # 取出原始文本 raw_text = x[0][0] # 匹配所有key:特征为字母开头,由字母、空格、连字符组成,以冒号结尾 keys = re.findall(r'[A-Za-z][\w\s-]+:', raw_text) # 按匹配到的key拆分原始文本,得到每个key对应的原始value片段 value_segments = re.split(r'[A-Za-z][\w\s-]+:', raw_text)[1:] # 组装符合要求的结果字典 result = {} for key, val_seg in zip(keys, value_segments): # 自动去除value前后的所有空白字符(包括换行、多余空格、非断空格\xa0) cleaned_val = val_seg.strip() # 按需求将value存为列表格式,空值保留空列表 result[key] = [cleaned_val] if cleaned_val else []
输出效果
打印result即可得到你需要的结构:
{ 'Name in home country:': ['Kylian Mbappé Lottin'], 'Date of birth:': ['Dec 20, 1998'], 'Place of birth:': ['Paris'], 'Age:': ['22'], 'Height:': ['1,78 m'], 'Citizenship:': ['France'], 'Position:': ['attack - Centre-Forward'], 'Foot:': ['right'], 'Player agent:': ['Relatives'], 'Current club:': ['Paris Saint-Germain'], 'Joined:': ['Jul 1, 2018'], 'Contract expires:': ['Jun 30, 2022'], 'Outfitter:': ['Nike'], 'Social-Media:': [] }
内容的提问来源于stack exchange,提问作者me.limes
相关产品推荐
相关产品推荐

