2016-06-09 68 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()  
相关问题