2015-04-01 111 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]