2012-10-19 163 views
2

我可以用很多方式解決這個問題,但我想使用Python。這裏的問題是:拆分分隔字符串/單元格的值爲多行

我有一個包含像這樣值的CSV文件:

Name   Address     Skills 

Napoleon  Preston, Idaho   Bowhunting, Computer Hacking, Drawing Unicorns 

我想將它轉換成這樣:

Name   Address     Skill 
Napoleon  Preston, Idaho   Bowhunting 
Napoleon  Preston, Idaho   Computer Hacking 
Napoleon  Preston, Idaho   Drawing Unicorns 

我研究,我也請閱讀CSV庫,但我覺得我最終會做一些非常醜陋,過於複雜的事情。

+3

歡迎堆棧溢出!我們鼓勵你[研究你的問題](http://stackoverflow.com/questions/how-to-ask)。如果你已經[嘗試了某些東西](http://whathaveyoutried.com/),請將其添加到問題中 - 如果沒有,請先研究並嘗試您的問題,然後再回來。 – 2012-10-19 13:03:11

+1

請添加你到目前爲止嘗試過的。 – m1k3y3

+1

它總是這樣的形式:'名稱城市,國家技能1,技能2,技能3,...'?換句話說,你保證有一個城市*和一個國家*,並且它們總是用逗號隔開的嗎? – mgilson

回答

3

現在你有一個平面文件,我相信操縱你的數據的第一步是把它加載到Python中,以便你可以開始使用它。

你在正確的軌道上。 csv模塊是專爲這個

假設您的數據是製表符分隔

import csv 

with open('your_csv.csv') as f: 
    f.readline() # these are headings should remove them 
    csv_reader = csv.reader(f, delimiter='\t') 
    for line_list in csv_reader: 
    # line_list is a list of each row of your csv  
    # line_list[0] Contains 'Name' data 'Napolean' 
    # line_list[1] Cotinas Address 'Preston, Idaho' 
    # line_list[2] Contains skills 'Bowhunting, Computer Hacking, Drawing Unicorns' 
    skills_list = [x.strip() for x in line_list[2].split(',')] 
    for skill in skills_list: 
     #line_list[0] line_list[1], skill 


     Napoleon  Preston, Idaho   Bowhunting 
     Napoleon  Preston, Idaho   Computer Hacking 
     Napoleon  Preston, Idaho   Drawing Unicorns 
+0

謝謝!如果我有能力,我會投票你的帖子。 – JPKab

+0

要忽略第一行,您應該能夠在遍歷csv閱讀器之前從'f'中讀取它。 (我認爲)。例如'f.readline(); csv_reader = csv.reader(f,delimiter ='\ t')' – mgilson

+1

我不斷聽到StackOverflow社區有多棒。謝謝,我迫不及待地想放棄一天。 – JPKab

相關問題