2015-04-01 71 views
0
names = [ 
'LIC. SEBASTIÁN LASTIRI', 
'ING. AGR. ROBERTO DANIEL RODRÍGUEZ', 
'C.P.N. JULIO DOMINGO BURAK', 
'INGENIERO HIDRÁULICO VÍCTOR AGUSTÍN PORRINO' 
] 

我有這樣的名稱列表,我需要從名稱中刪除像('lic','cpn'等)的前綴(這只是示例中有很多這種格式的前綴)從名稱中刪除前綴python

輸出殼是這樣的:

'塞巴斯蒂安LASTIRI'

我試圖:

for i in names: 
    if '.' in i: 
     i.split('.')[1] 

但它的工作原理時,纔會有在前綴 一個點如何解決這個

+0

想要從'INGENIEROHIDRÁULICOVÍCTORAGUSTÍNPORRINO'中刪除某些東西嗎?來自'ING。 AGR。羅伯特丹尼爾羅德里格斯'?你如何區分名稱的「前綴」? – 2015-04-01 08:06:11

+0

@Jérôme如果有前綴 - 應該有更多的一個點 – 2015-04-01 08:07:12

+1

另外,'應該有多個點'使得你的問題是錯誤的,因爲LIC。 SEBASTIÁNLASTIRI'只有一個點,因此不超過一個,因此,沒有前綴... – Jerry 2015-04-01 08:10:04

回答

1

這裏是你的問題的解決方案:

import re 

names = [ 
    'LIC. SEBASTIÁN LASTIRI', 
    'ING. AGR. ROBERTO DANIEL RODRÍGUEZ', 
    'C.P.N. JULIO DOMINGO BURAK', 
    'INGENIERO HIDRÁULICO VÍCTOR AGUSTÍN PORRINO' 
] 

new_names = [re.sub("^\s+", "", i.split(".")[-1]) for i in names] 

print new_names # [SEBASTIÁN LASTIRI', ROBERTO DANIEL RODRÍGUEZ', JULIO DOMINGO BURAK', 'INGENIERO HIDRÁULICO VÍCTOR AGUSTÍN PORRINO'] 
0

您可以使用下面的代碼:

import re  

names = [ 
'LIC. SEBASTIAN LASTIRI', 
'ING. AGR. ROBERTO DANIEL RODRIGUEZ', 
'C.P.N. JULIO DOMINGO BURAK', 
'INGENIERO HIDRAULICO VICTOR AGUSTIN PORRINO' 
] 
for i in names: 
    res = re.split(r'\.\s*(?=[^.]+$)', i) 
    if len(res) > 1: 
     print res[1] 
    else: 
     print res[0] 

輸出:

SEBASTIAN LASTIRI                                                          
ROBERTO DANIEL RODRIGUEZ                                                        
JULIO DOMINGO BURAK                                                          
INGENIERO HIDRAULICO VICTOR AGUSTIN PORRINO 
0

一個簡單的過濾器,最後只使用沒有點的單詞。

names = [ 
    'LIC. SEBASTIÁN LASTIRI', 
    'ING. AGR. ROBERTO DANIEL RODRÍGUEZ', 
    'C.P.N. JULIO DOMINGO BURAK', 
    'INGENIERO HIDRÁULICO VÍCTOR AGUSTÍN PORRINO' 
] 

names_formated = [' '.join([sub for sub in name.split() if sub[-1] != '.']) for name in names]