我有一個大名單列表,其中包含多個名稱的條目用逗號或分號分隔,或者即使偶爾不會。例如:可靠地轉換「最後,第一,最後,第一個」名稱的逗號/分號分隔列表
First Last
Last, First
Last, First, A.
Last, First Middle
Last, First, Last, First A., Last, First, Ph.D, Last, First, M.D., Last, J. R, Last, O.
Last, First Middle plus other names, Last, First, Jr., Last, First, Sr.
Last, First; Last, First A.; Last, First Middle
First Last, First Last, First A. Last, Last, First
我試圖創建一個功能,我在每個條目通過單獨,這將可靠地返回一個列表,一切正常有序的「第一個最後」與像JR任何可能的後綴, MD等,到目前爲止,從另一個SO問題,我有:
def fix_names(names):
if ',' in names:
names = [b.strip() + ' ' + a.strip()
for a, b in zip(*[iter(names.split(','))] * 2)]
return names
我想直到結束:
['First Last']
['First Last', 'First A. Last', 'First Last, Ph.D', 'First Last, Jr.'] etc
如果我剝後綴,如 「MD」 第一,不要讓他們,大部分時間他的時間它的工作。例如以一個例子無前綴:
Last, First, Last, First A., Last, First, Last, First, Last, J. R., Last, O.
我得到:
['First Last', 'First A. Last', 'First Last', 'First Last', 'J. R. Last', 'O. Last']
另一起案件中,如 「姓,名A.」原來是['First Last']。對於可能是「第一個最後,最後一個」的情況,我不一定介意它是否被逆轉,因爲它更爲罕見,如果需要,我可以在以後修復它們。由於我不確定是否易於分割一次,然後遍歷每個值,並在需要再次分割時添加到列表中,因此我也在分步處理分號和逗號。
你能給一個簡單的例子,說明什麼可行,什麼不可行;真正的和預期的結果? – utdemir
這隻能解決你的問題的第一部分,但如何使用正則表達式來提取帶有後綴的名稱,例如(這是未經測試,根據需要重新排列和修改給定輸入):'(? [AZ] \ [?AZ] \???\ s?(?[AZ] \ w * \ - [AZ]?\ w *)\ ?[AZ]?\ w *)(?:,\ s |)(? Jr \。| M \ .D \。| \。| Ph \ .D |)' –
antikantian