从txt文件中获取数据,将其解析并放入CSV

时间:2017-06-12 03:40:44

标签: python excel csv parsing

我一直在网上搜索我确切问​​题的解决方案,但所有答案都已过时。我有一个文本文件,其中包含以下格式的数据:

  

第一名: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]

这段代码只是假设在“:”之后打印每个东西。我无法真正开始工作,也不知道我将如何将其用于我想要的格式。

1 个答案:

答案 0 :(得分:0)

假设你有:

$ 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转置矩阵,使标题位于顶部。

那么你可以这样做:

>>> 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])