python - 解析姓名和学位?

标签 python regex

我正在尝试解析包含姓名和学位的字符串。我有一长串这些。有些不包含学位,有些包含一个,有些包含多个。

示例字符串:

Sam da Man J.D.
Green Eggs Jr. Ed.M.
Argle Bargle Sr. MA
Cersei Lannister M.A. Ph.D. 

据我所知,学位有以下模式:

x.x.
x.x.x.
x.x.xx.
x.xx.
xx.x.
x.xxx.
two caps (ex: 'MA')

我将如何解析它?

我是正则表达式的新手,事实证明解决这个问题非常耗时。我一直在用这个 post并尝试了 split = re.split('\s+|([.])',s)split = re.split('\s+|\.',s) 但它们仍然在第一个空格处分开。

作为对第一条评论的回应,我考虑过学位名称。我一直在尝试制作一个识别“x.x”然后识别通配符的正则表达式,因为度数中有几种模式如下所示:x.x(something): x.x. x.x.x. x.x.xx.

然后我还有一些要分类。

或者,对名称进行分类可能更容易?

或者甚至在集合中列出学位并搜索它们?

{'M.A.T.','Ph.D.','MA','J.D.','Ed.M.', 'M.A.', 'M.B.A.', 'Ed.S.', 'M.Div.', 'M.Ed.", 'RN', 'B.S.Ed.'}

最佳答案

试着改变你的“Jr.”,“Sr.”,......用这样的东西代替它们:“Jr~”,“Sr~”,...... 这是执行此操作的正则表达式:

/ (Jr|Sr)\. / $1~ /g

(参见 here)

你得到这个字符串:

Sam da Man J.D.
Green Eggs Jr~ Ed.M.
Argle Bargle Sr~ MA
Cersei Lannister M.A. Ph.D. 

现在您可以使用此正则表达式轻松获取度数:

/ (MA|RN|([A-Z][a-z]?[a-z]?\.)+) /g

(参见 here)

关于python - 解析姓名和学位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17428161/

相关文章:

python - Python 类中的属性是否共享?

regex - Perl:为什么 eval '/(...)/' 不设置 $1?

PHP在json字符串变量前后添加双引号

javascript - 使用负向前瞻时仅匹配单个单词

java - 带分隔符的正则表达式

python - 将简单的数字列表转换为 JSON 数组

python - 为什么我在参数调整 (cv) 上的平均测试分数低于保持测试集 (RandomForestClassifier)?

python - Flask 的 DispatcherMiddleware 与 Plotly 的 Dash 配合不佳

php - 必须有一个更好的正则表达式

python - 对象没有属性 'build_absolute_uri' - Django Rest Framework