2016-06-09 37 views
0

`我目前有一個CSV名稱列表[「姓氏」 「, 「名字」]。如果沒有名字,數組只有[「1」]。當前CSV中的每個名稱都在其自己的單獨陣列中。我試圖用CSV編寫名字,這樣一列就是姓氏(和「1」),而另一列是所有名字。如何在行和下一個數組的相同數組中寫入項目跳過一行並在Python中的下一行寫入項目

我目前的CSV看起來像

Names: 
Wayne, Bruce 
1 
1 
1 
Parker, Peter 
Kent, Clark 

我希望我的CSV到輸出

Last Name: First Name: 
Wayne   Bruce 
1 
1 
Parker  Peter 
Kent   Clark    

隨着我當前的代碼,任何跟隨[ 「1」]是在一個新行會,但任何緊跟着一個數組[「姓氏」,「名字」]不是。有什麼方法可以解決這個問題在我目前的代碼?

import re 
import csv 


trite = open('Lastfirststrip.csv', "r") 
spamreader = csv.reader(trite) 
twrite = open('LastFirst.csv', 'w') 
spamwriter = csv.writer(twrite, delimiter=" ", lineterminator="\n", skipinitialspace=True) 
altwriter = csv.writer(twrite, delimiter=' ', lineterminator=',', skipinitialspace=True) 

for column in spamreader: 
    c = "," 
    d = ",".join(column) 
    e = re.findall('[A-Za-z]+',d) 

    if len (e) == 1: 
     for item in e: 
      spamwriter.writerow([item]) 
    else: 
     for item in e: 
      altwriter.writerow([item]) 
+0

你可以發表一個數據的例子,它的外觀和期望的結果嗎?我的描述有點迷失。 –

+0

...我不相信你的輸入格式是CSV。 – rrauenza

回答

0

這個問題的感覺是「我有錘子,所以一切看起來都像釘子。」

你正在嘗試使用csv模塊來做一些不完全是csv的東西。

with open("/tmp/input") as fdin, open("/tmp/o", "w") as fdout:     
    for line in fdin:               
     line = line.strip()              
     if line == "1":               
      print >> fdout, line             
      continue                
     if line == "Names:":              
      print >> fdout, "Last Name:\tFirst Name:"       
      continue                
     first, last = line.split(",")           
     print >> fdout, first.strip() + "\t" + last.strip()  
相關問題