举一反三学python(2)—函数应用

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)

运行结果展示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值