如何提取列表人名元素中的称谓替换原元素,无需逐行编写替换规则?
方案1:字符串分割法(无需引入额外库,逻辑简单)
观察所有人名的格式统一为姓氏, 称谓. 姓名,可以按固定规则拆分提取:
names=['Anna, Mrs. James (Nadia Elf)', 'Martin, Mr. Michael ', 'Barese, Mr. Alfred', 'Amalfi, Mrs. Abby (J E V)', 'Manuel, Dr. Louis'] titles = [] for name in names: # 先按逗号拆分取后半部分,去除首尾空格后按空格拆分,取第一个元素去掉末尾的点 title = name.split(',')[1].strip().split()[0].rstrip('.') titles.append(title) print(titles)
运行输出结果为:
['Mrs', 'Mr', 'Mr', 'Mrs', 'Dr']
如果想写得更简洁可以用列表推导式,一行就能完成:
titles = [name.split(',')[1].strip().split()[0].rstrip('.') for name in names]
方案2:正则匹配法(适配性更强,适合格式有小差异的场景)
如果后续人名格式有小变动(比如部分称谓前没有逗号),可以用正则匹配所有带.后缀的称谓关键词:
import re names=['Anna, Mrs. James (Nadia Elf)', 'Martin, Mr. Michael ', 'Barese, Mr. Alfred', 'Amalfi, Mrs. Abby (J E V)', 'Manuel, Dr. Louis'] titles = [re.search(r'(\w+)\.', name).group(1) for name in names] print(titles)
运行结果和方案1完全一致。
内容的提问来源于stack exchange,提问作者john johns
相关产品推荐
相关产品推荐

