给定字符串提取姓名(字符串、list、re“零宽断言”)


Python 官网 https://www.python.org/


  这里,才 python 前沿。可惜是英文原版。所以,我要练习英文阅读。🧐🧐


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。

            —— 华罗庚


笔记:个人信息提取(字符串)


  1. 练习题目
  2. 中英文姓名提取
  3. 代码运行效果
  4. 完整代码
  5. 骚包的中文字符提取操作(不用 re ,用 in 也完成了本博文题目。)

在这里插入图片描述

  不练不知道,一炼“嘿一跳”
  看似简单的问题,也是有“难点”的。

  这个“小练笔”,差点儿没搞死我,居然调试了近一小时。
  最后才用“零宽断言”和 for 嵌套搞定。😉😉

题目来源:

《从给定字符串中提取姓名》
https://blog.csdn.net/weixin_30567471/article/details/98618745


回首页

中英文姓名提取代码

  通过对包含中英文姓名的字符分析,发现字符串结构中,中文名都在一个半角空格接字母之前,英文名都在一个半角空格前是数字或中文字符。可以用零宽断言:中文名,半角空格和字符(w,不含标点和空格)之前的字符(w);英文名,半角空格和字符(w)之后的字符串。
name_C = re.findall(r"(\w+)(?=\s\w+)", j) # 零宽断言提取前面的中文姓名。
name_E = re.findall(r"(?<=[\w+]\s)(\w+)", j) # 零宽断言提取后面的英文姓名。

回首页

运行效果

在这里插入图片描述


回首页

完整 Python 代码


  我的解题思路,已融入代码注释,博文中就不再赘述。

(如果从语句注释不能清楚作用,请评论区留言指教和探讨。🤝)

#!/sur/bin/env python
# coding: utf-8

'''

filename: /sdcard/qpython/tem.py

梦幻精灵_cq的炼码场


'''


from mypythontools import color, wait, cut_line # 从自码工具模块加载需用代码模块中要使用的函数。
import re


names = ["张敏15 zhangmin15 ()", "杨丹丹 yangdandan (99999)", "钱凤 qianfeng (84567)", "柏宁宁 bainingning (99999), 滕玥3 tengyue3 ()"]

for i in names: # 遍历提取。
    for j in i.split(','): # 鉴于最后列表元素是两个英文逗号分隔的名字,for嵌套用','分词。
        name_C = re.findall(r"(\w+)(?=\s\w+)", j) # 零宽断言提取前面的中文姓名。
        name_E = re.findall(r"(?<=[\w+]\s)(\w+)", j) # 零宽断言提取后面的英文姓名。
        print(f"{cut_line()}{'':>2}输入字符串:“{j}”\
{cut_line()}\n\n{'提取姓名:':>12}\
\n\n{'中文:':>18}{name_C[0]}\n\n\
{'英文:':>18}{name_E[0]}\n{cut_line()}")


wait() 

回首页

上一篇:个人信息提取(字符串)

下一篇:骚包的中文字符提取操作(字符串,不用 re ,用 in )


我的HOT博:
推荐条件 点阅破千

回首页


老齐漫画头像

精品文章:

来源:老齐教室


回首页

Python 入门指南【Python 3.6.3】

好文力荐:

CSDN实用技巧博文:


文信息计算机自动处理的研究已有几十年的 历史 , 但至今仍有许多技术难题没有得到很好解 决 , 姓名自动识别问题就是其的一个。由于 它与文文本的自动分词一样 , 属于文信息处理 的基础研究领域 , 因而它的研究成果直接影响到 文信息的深层次研究。汉语的自身特点使得文信 息自动处理大多是先对要处理的文本进行自动分词 (加入显式分割符) , 然后再在分词的基础上进行词 法、语法、语义等方面的深入分析。而在分词阶 段 , 文本人名、地名以及其它专有名词和生词 大多被切分成单字词 , 在这种情形下如不能很好地 解决汉语文本专有名词生词的识别问题 , 将给其 后的汉语文本的深入分析带来难以逾越的障碍。姓名的自动识别问题就是在这种背景下提出来 的。对这一问题的研究目前采用的技术主要利用 以下几方面的信息: 姓名用字的频率信息、上下文 信息[1 ,2 ] 、语料库统计信息[2 ] 、词性信息等[3 ] 。本 文的方法是 , 首先对人名的构成、姓名用字的 规律及上下文文本信息特征进行充分分析 , 在此基 础上建立起两组规则集 , 将其作用于测试文本 , 获 得初步识别结果 , 再利用大规模语料库的统计信息 对初步识别结果进行概率筛选 , 设定合适的阈值 , 输出最终识别结果。经对 50 多万字的开放语料测 试 , 系统自动识别出 1781 个人名 , 在不同的 筛选阈值下获得 90 %以上的识别准确率 , 而召回 率高于 91 %。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幻精灵_cq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值