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','c.p.n'等)的前缀(这只是样本,这种格式有很多前缀)
输出shell如下:
'SEBASTIÁNLASTIRI'
我试过:
for i in names:
if '.' in i:
i.split('.')[1]
但只有在前缀中有一个点时它才有效 如何解决这个问题
答案 0 :(得分: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']
答案 1 :(得分: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
答案 2 :(得分: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]