2011-03-24 266 views
0

分开后,我有以下数据库字段: AUX:史密斯,J.,琼斯,M. &福特,S. 有可以从一个名字最多15个及其他用逗号分隔,最后一个用&分隔用逗号分开拆分名时,姓氏也用逗号

我怎样才能把它分成列表,其中list [1] = Smith,

+0

这将是有益的,如果你能更描述数据。每个名字都只有一个首字母缩写,或者“Tolkien,J. R. R.”在这个列表中?首字母是否总是单个字母,或者胭脂是否会输入“Astaire,Fred”这样的名字?首字母是否总是跟着一段时间? – Thomas 2011-03-24 18:50:22

+0

Tolkien,J.R.R.可能在名单上。据我所知,没有整个名字,每个名字只有一个名字,但可以有几个名字。但是,我的技能太难了,因为我必须每隔一个逗号(即姓名之间,而不是姓氏,名字)和字符之间分开。 – Tapani 2011-03-24 19:20:00

回答

3
def parseNames(namestr): 
    namestr = namestr.replace('&', ',') 
    nameparts = [namepart.strip() for namepart in namestr.split(',')] 
    it = iter(nameparts) 
    return zip(it,it) # return list of part-pairs 

def nameStr(name, fmt="{lastname}, {firstname}"): 
    return fmt.format(lastname=name[0], firstname=name[1]) 

names = [nameStr(name) for name in parseNames("Smith, J., Jones, M. & Ford, S")] 

给你

['Smith, J.', 'Jones, M.', 'Ford, S'] 
+0

明天我会在工作中尝试这个。谢谢您的回答。你的,Tapani – Tapani 2011-03-24 19:24:17

+0

这个解决方案工作得很好,我想我的服务器中有太旧版本的Python,并且安装了新版本。再次感谢你。 – Tapani 2011-03-28 18:49:26