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(何か): xxxxxxxxx.

そして、分類するものがさらにいくつかあります。

または、名前を分類する方が簡単でしょうか?

または、コレクション内の学位を一覧表示して検索することもできますか?

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

これを使用できます:

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

ドット一つで言葉はいらない

于 2013-10-02T14:29:08.900 に答える
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 に答える