用熊猫读取文件并创建头

时间:2018-06-27 11:41:01

标签: python database pandas file

我有几个以这种方式格式化的txt文件

label1: value1 label2: string1 date: 2018-06-26 label3: value2 label4: string

我想读取这些文件并创建一个数据库 我有标题,然后是值/字符串 然后我将其写入文件。 有什么帮助吗? 问候

2 个答案:

答案 0 :(得分:2)

好像您在标识符标签和值之间建立了映射。您可以通过标准Python将其转换为字典:

from io import StringIO

mystr = StringIO("""label1: value1 label2: string1 date: 2018-06-26 label3: value2 label4: string""")

# replace mystr with open('file.csv', 'r')
with mystr as fin:
    data = next(fin).strip().split()
    data_dict = {i[:-1]: j for i, j in zip(data[::2], data[1::2])}

print(data_dict)

{'date': '2018-06-26',
 'label1': 'value1',
 'label2': 'string1',
 'label3': 'value2',
 'label4': 'string'}

从这里开始,根据您要输出数据的确切格式,有很多选项,例如pandascsv等。您需要提供更多详细信息以帮助执行此步骤,但首先您应该研究以下选项:

答案 1 :(得分:1)

如果数据与此完全相似:

年龄:39名称:杰克日期:2018-06-26地区:纽约公开赛:是
年龄:21名称:玫瑰日期:2018-09-16地区:TX营业时间:NO

您需要根据行中的空格分割文本。

import pandas as pd

f=open('D:\\1.txt','r')
datalist=[]
dlabels=[]
for line in f:
    words = line.split(' ')
    words[-1] = words[-1][:-1]
    if len(dlabels)==0:
        for i in range(0,len(words),2):
            dlabels.append(words[i][:-1])
    tempL=[]
    for i in range(0,len(words),2):
        tempL.append(words[i+1])
    datalist.append(tempL)        
f.close()

data=pd.DataFrame(datalist,columns=dlabels)
print(data)  

输出:
  年龄名称日期区域开放
0 39杰克2018-06-26纽约是
1 21玫瑰2018-09-16 TX NO