如何用Python从单个字符串中解析姓名、年龄、性别?
从拼接字符串中解析姓名、年龄、性别
问题说明
给定拼接格式的字符串,需要从中提取姓名、年龄、性别三类信息:
输入示例:
str = "musleh23malejemi22femaletanjir26male"
期望输出:
Name: musleh, Age: 23, Gender: male Name: jemi, Age: 22, Gender: female Name: tanjir, Age: 26, Gender: male
你当前的代码存在问题:
import re text = "musleh23malejemi22femaletanjir26male" chunks = re.split(r"\d+}", text)
这段代码无法正常工作的原因有两点:一是正则表达式多了多余的}符号,二是split方法仅能按匹配内容分割字符串,无法直接提取我们需要的三组关联信息。
正确实现方案
我们需要用正则匹配捕获的方式,精准定位每组信息的结构:字母组成的姓名、数字组成的年龄、固定的性别字符串(male/female)。
完整代码:
import re text = "musleh23malejemi22femaletanjir26male" # 构造正则模式,分别捕获姓名、年龄、性别三个部分 pattern = re.compile(r"([a-z]+)(\d+)(male|female)", re.IGNORECASE) # 获取所有匹配的三元组 matches = pattern.findall(text) # 遍历输出结果 for name, age, gender in matches: print(f"Name: {name}, Age: {age}, Gender: {gender}")
代码说明
([a-z]+):捕获一个或多个小写字母,对应姓名部分(\d+):捕获一个或多个数字,对应年龄部分(male|female):精准匹配固定的性别字符串,支持male/female两种取值re.IGNORECASE:可选参数,用于兼容可能出现的大小写混合情况(如Male/Female)findall方法会返回所有符合模式的三元组列表,遍历后即可格式化输出对应信息
内容的提问来源于stack exchange,提问作者Md Musleh Uddin
相关产品推荐
相关产品推荐

