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

Python 从txt文件中获取数据,对其进行解析,并将其放入CSV,python,excel,csv,parsing,Python,Excel,Csv,Parsing,我一直在网上搜索我的问题的解决方案,但所有的答案都过时了。我有一个文本文件,其中包含以下格式的数据: 名字:xxx 中间名:xxx 姓氏:xxx 生日:xxx 高度:xxx 重量:xxx 地址:xxx 城市、州邮政编码:xxx 文件中有多个条目。我需要从“xxx”中提取数据,基本上是每个“:”之后的所有内容,并将其放在一行中,每个“xxx”用逗号分隔。这是为了我可以使用它作为一个CSV文件。我想把这些信息放到Excel表格中 所以我希望它看起来像这样: firstname,middlename,

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

名字:xxx
中间名:xxx
姓氏:xxx
生日:xxx
高度:xxx
重量:xxx
地址:xxx
城市、州邮政编码: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)    
>>> zip(*data)[0]
('FIRST NAME', 'MIDDLE NAME', 'LAST NAME', 'BIRTHDAY', 'HEIGHT', 'WEIGHT', 'ADDRESS', 'CITY, STATE ZIP')
印刷品:

[('FIRST NAME', 'MIDDLE NAME', 'LAST NAME', 'BIRTHDAY', 'HEIGHT', 'WEIGHT', 'ADDRESS', 'CITY, STATE ZIP'), ('xxx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx')]
zip
转换矩阵,使标题位于顶部

那么你可以做:

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

print zip(*data)    
>>> 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])
假设你有:

$ 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)    
>>> zip(*data)[0]
('FIRST NAME', 'MIDDLE NAME', 'LAST NAME', 'BIRTHDAY', 'HEIGHT', 'WEIGHT', 'ADDRESS', 'CITY, STATE ZIP')
印刷品:

[('FIRST NAME', 'MIDDLE NAME', 'LAST NAME', 'BIRTHDAY', 'HEIGHT', 'WEIGHT', 'ADDRESS', 'CITY, STATE ZIP'), ('xxx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx')]
zip
转换矩阵,使标题位于顶部

那么你可以做:

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

print zip(*data)    
>>> 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])

您尝试的解决方案是如何过时的?你试过哪些?你目前的代码是什么?这是我在这个问题上找到的唯一一种帮助,我尝试过使用它,但没有得到任何结果。现在读取原始文本文件与在更旧的python版本中读取原始文本文件是一样的。所以,忘记任何过时的东西吧。你知道如何打开一个文本文件并逐行阅读吗?文件中的每个条目是否总是以相同的顺序包含相同的字段?我们很乐意帮助您完成此项目,但您需要付出一些努力。Stack Overflow不是免费的代码编写服务,因此请添加一些您编写的相关代码,并清楚地解释您遇到的问题。您尝试的解决方案是如何过时的?你试过哪些?你目前的代码是什么?这是我在这个问题上找到的唯一一种帮助,我尝试过使用它,但没有得到任何结果。现在读取原始文本文件与在更旧的python版本中读取原始文本文件是一样的。所以,忘记任何过时的东西吧。你知道如何打开一个文本文件并逐行阅读吗?文件中的每个条目是否总是以相同的顺序包含相同的字段?我们很乐意帮助您完成此项目,但您需要付出一些努力。Stack Overflow不是一个免费的代码编写服务,所以请添加一些您已经编写的相关代码,并清楚地解释您被卡住的地方。OP声明:所以我希望它看起来像这样:
firstname、middlename、lastname、生日、身高、体重、地址、citystatezip
我演示了如何做。我发现“zip”的语法无效你键入的内容与我不一样。逐步完成上面的例子。你会明白的…OP声明:所以我希望它看起来像这样:
firstname,middlename,lastname,生日,身高,体重,地址,citystatezip
我演示了如何做到这一点。我发现“zip”的语法无效。你键入的内容与我不同。逐步完成上面的例子。你会明白的。。。