James James - 17 days ago 7
Python Question

Extracting some portion of data from text into csv using Python

I have some data in text file as shown below image(it's just a portion of whole data). What is best way to filter out keys?

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

Answer

For a series of files in the form of what you posted try

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=[]
Comments