我有几个以这种方式格式化的txt文件
label1: value1 label2: string1 date: 2018-06-26 label3: value2 label4: string
我想读取这些文件并创建一个数据库 我有标题,然后是值/字符串 然后我将其写入文件。 有什么帮助吗? 问候
答案 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'}
从这里开始,根据您要输出数据的确切格式,有很多选项,例如pandas
,csv
等。您需要提供更多详细信息以帮助执行此步骤,但首先您应该研究以下选项:
答案 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