Con_Info = [ "王伟(男),河南郑州, 137****8331", "杨秀娟(女),陕西西安, 138****4117", "刘子豪(男),河北廊坊, 136****2964", "李发魁(男),河南洛阳, 139***3297", "王小花(女),山西太原, 138****0042", ] ''' 要求对上述文本数据解析,获得如下格式的结构化信息: [ {"name": "王伟", "sex":"男", address": "河南郑州", "pho": "137****8331"}, {"name": "杨秀娟", "sex":"女","address": "陕西西安", "pho": "138****4117"}, ] 我们先分析一个例子,解析这个文本数据:""王伟(男),河南郑州, 137****8331"。 首先,定义一个函数 parse_parts,通过逗号拆分出姓名(性别)、住址、手机号码三大部分。 其次,定义一个函数 parse_name,通过对姓名(性别)部分的进一步拆分,获得姓名、性别分项。 然后,定义一个函数 parse_profile,组装数据成要求的格式 接着,定义一个函数 parse_creators,完成解析。 最后,调用函数,完成任务 ''' # 通过逗号拆分出每条数据为姓名(性别)、住址、手机号码三大部分 def parse_parts(creator): info = creator.split(',') name_sex, address, pho = info[0], info[1], info[2] return name_sex, address, pho # 通过对姓名(性别)部分的进一步拆分,获得姓名、性别分项 def parse_name(name_sex): index = name_sex.find('(') # 找到符号(的索引 name, sex = name_sex[0:index], name_sex[index+1:-1] # 切片分割字符串 return name, sex # 方法1 # 调用函数,组装数据成要求的格式 # def parse_profile(creator): # name_sex, address, pho = parse_parts(creator) # name, sex = parse_name(name_sex) # return {"name": name, "sex": sex, "address": address, "pho": pho} # # 调用函数,解析数据逐一添加新的列表中 # def parse_creators(creators): # profiles = [] # for creator in creators: # 数据遍历 # profile = parse_profile(creator) # profiles.append(profile) # return profiles # 方法2 # def parse_creators(creators): # profiles = [] # for creator in creators: # name_sex, address, pho = parse_parts(creator) # name, sex = parse_name(name_sex) # profiles.append({"name": name, "sex": sex, "address": address, "pho": pho}) # return profiles # 方法3, 与方法1类同,只是后面用的是列表推导式 def parse_profile(creator): name_sex, address, pho = parse_parts(creator) name, sex = parse_name(name_sex) return {"name": name, "sex": sex, "address": address, "pho": pho} def parse_creators(creators): return [parse_profile(creator) for creator in creators] # 调用函数,完成任务 if __name__ == '__main__': profiles = parse_creators(Con_Info) print(profiles)
运行结果展示: