首页 文章

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

提问于
浏览
1

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

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

    假设你有:

    $ 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 转置矩阵,使 Headers 位于顶部 .

    那么你可以这样做:

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

相关问题