从txt文件中获取数据,parsing并放入CSV

我一直在网上寻找一个解决我的确切问题,但所有的答案都过时了。 我有一个文本文件包含这种forms的数据:

第一个名字:xxx
中间名:xxx
姓:xxx
生日:xxx
高度:xxx
重量:xxx
地址:xxx
CITY,STATE ZIP:xxx

文件中有多个条目。 我需要从“xxx”中获取数据,基本上每个“:”后的所有数据都放在一行中,每个“xxx”用逗号隔开。 这是我可以使用它作为一个CSV文件。 我想把这个信息放入Excel工作表中。

所以我希望它看起来像这样:

firstname,middlename,lastname,birthday,height,weight,address,citystatezip 

这就是我所拥有的,我不知道从哪里走。

 with open('info.txt') as file: for rec in file: print rec.split(':')[1] 

这段代码只是假设在“:”后面打印每个东西。 我不能真正把它工作,也不知道我将如何把它放在我想要的格式。

假设你有:

 $ cat file.csv FIRST NAME: xxx MIDDLE NAME: xxx LAST NAME: xxx BIRTHDAY: xxx HEIGHT: xxx WEIGHT: xxx ADDRESS: xxx CITY, STATE ZIP: xxx 

你可以做:

 with open('file.csv') as f: data=[[e.strip() for e in line.split(':')] for line in f] print zip(*data) 

打印:

 [('FIRST NAME', 'MIDDLE NAME', 'LAST NAME', 'BIRTHDAY', 'HEIGHT', 'WEIGHT', 'ADDRESS', 'CITY, STATE ZIP'), ('xxx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx')] 

zip调换matrix,使标题在顶部。

那么你可以这样做:

 >>> zip(*data)[0] ('FIRST NAME', 'MIDDLE NAME', 'LAST NAME', 'BIRTHDAY', 'HEIGHT', 'WEIGHT', 'ADDRESS', 'CITY, STATE ZIP') 

然后得到你想要的东西:

 >>> ','.join([e.replace(' ','').replace(',','').lower() for e in zip(*data)[0]]) firstname,middlename,lastname,birthday,height,weight,address,citystatezip 

如果你想第一列(冒号后的项目),你可以做同样的方法:

 >>> ','.join([e.replace(' ','').replace(',','').lower() for e in zip(*data)[1]]) xxx,xxx,xxx,xxx,xxx,xxx,xxx,xxx 

或者更简单地说:

 >>> ','.join(zip(*data)[1])