假设您有一个包含名称的字符串,如下所示:
"Leonard, A., Fraternali, F., Daraio, C."
现在,这个字符串中有三个人,我想找到获得这三个人的最好方法,因为字符串有时也可以:
"Leonard A., Fraternali F., Daraio C.",
即没有逗号。在我有一个如下功能之前:
def tokenize(str, token=','):
return [x for x in re.split(r'\s*%s\s*' % token,str) if x]
但当然这在第一种情况下不起作用。 谢谢!
答案 0 :(得分:0)
也许这样做
In [10]: re.split(r'\.,', "Leonard A., Fraternali F., Daraio C.")
Out[10]: ['Leonard A', ' Fraternali F', ' Daraio C.']
In [11]: re.split(r'\.,', "Leonard, A., Fraternali, F., Daraio, C.")
Out[11]: ['Leonard, A', ' Fraternali, F', ' Daraio, C.']
答案 1 :(得分:0)
这是你想要的吗?
def tokenize(line, token=','):
splitline = line.split(token)
names = []
for name in splitline:
name = name.strip()
if len(name.replace(".", "") ) == 1:
try:
names[-1] = '%s %s' % (names[-1], name)
continue
except IndexError:
pass
names.append(name)
return names
In: tokenize("Leonard A., Fraternali F., Daraio C.")
Out: ['Leonard A.', 'Fraternali F.', 'Daraio C.']
In: tokenize("Leonard, A., Fraternali, F., Daraio, C.")
Out: ['Leonard A.', 'Fraternali F.', 'Daraio C.']
答案 2 :(得分:0)
好的,如果你的名字都以点.
结尾,那么这就行了:
>>> names = "Leonard A., Fraternali F., Daraio C.".split('.')
>>> names
>>> ['Leonard A', ', Fraternali F', ', Daraio C', '']
>>> names = [name.strip(', ') for name in names if name]
>>> names
['Leonard A', 'Fraternali F', 'Daraio C']