4

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

示例字符串:

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')

我将如何解析这个?

我是正则表达式的新手,事实证明解决这个问题非常耗时。我一直在使用这篇文章并尝试过split = re.split('\s+|([.])',s)split = re.split('\s+|\.',s)但这些仍然在第一个空格上分裂。

在回应第一条评论时,我想到了学位名称。我一直在尝试制作一个识别“xx”的正则表达式,然后是一个通配符,因为在度数内有几个模式看起来像这样:xx(某事):xxxxxxxx。

然后我会有更多的分类。

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

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

{'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.'}
4

2 回答 2

0

尝试改变你的“Jr.”,“Sr.”,......用这样的东西替换它们:“Jr~”,“Sr~”,......这是这样做的正则表达式:

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

(见这里

你得到这个字符串:

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

(见这里

于 2013-07-05T10:24:52.547 回答
0

你可以使用这个:

'[ ](MA|RN|([A-Z][a-z]?[a-z]?\.){2,3})'

一个点不需要任何单词

于 2013-10-02T14:29:08.900 回答