使用Python将文本中的部分数据提取到csv中

2024-06-16 11:27:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我在文本文件中有一些数据,如下图所示(它只是整个数据的一部分)。筛选出密钥的最佳方法是什么?你知道吗

{  u'chan': 5,
   u'cls': 0,
   u'codr': u'4/5',
   u'data': u'ABfxqqqpVVVOAAA='
} 

Tags: 数据方法data密钥chancls文本文件codr
2条回答

对于一系列文件的形式,你张贴尝试

import csv
filenames=[...]
#open your output file in append mode

with open('output.csv','a+') as out:
    outwriter = csv.writer(out,dialect='excel')

#write your headers
outwriter.writerow(['header1','header2','header3'])

#for every file
for fname in filenames:
    with open(fname) as f:

        #list that holds each row
        csvlines=[]

        #labels you wanna keep
        keep=["u'data'","u'rssi'","u'timestamp'"]
        lines=f.readlines()
        print lines

        #split at first : character
        lines = map(lambda x:x.split(':',1),lines)

        for line in lines:
            if line[0].strip() in keep:

                csvlines.append(line[1].strip())
    #clean from unnecessary characters
            csvlines=map(lambda x:x.replace("u'","").replace("'","").replace(",",""),csvlines)
    #write it to csv and then reset it for the next file.
            if(len(csvlines)==3):
               print "writing"
               print csvlines
               outwriter.writerow(csvlines)
               csvlines=[]

假设示例数据是数据的一条记录,您可以使用pandas来子集并直接导出到excel工作簿。你知道吗

import pandas as pd

df = pd.DataFrame({  u'chan': 5,
   u'cls': 0,
   u'codr': u'4/5',
   u'data': u'ABfxqqqpVVVOAAA=',
   u'datr': u'SF10BW125',
   u'freq': u'912.9',
   u'lsnr': u'-8.2',
   u'mhdr': u'8007000002001900',
   u'modu': u'LORA',
   u'opts': u'',
   u'port': 5,
   u'rfch': 1,
   u'rssi': -111,
   u'seqn': 25,
   u'size': 16,
   u'timestamp': u'2016-11-17T09:51:44.406724Z',
   u'tmst': 2477375724L},index=[0])
df = df[['data','chan','timestamp','rssi']]
oName = #Path to desired excel workbook
df.to_excel(oName,'Sheet1')

相关问题 更多 >