2011-03-24 262 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