簡體   English   中英

從txt文件中獲取數據,將其解析並放入CSV

[英]Take data from a txt file, Parse it, and put into CSV

我一直在網上搜索我的確切問題的解決方案,但所有答案都已過時。 我有一個包含以下形式的數據的文本文件:

第一個名稱: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轉置矩陣,使標題位於頂部。

那么你可以這樣做:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM