-1

Very newbie programmer asking a question here. I have searched all over the forums but can't find something to solve this issue I thought there would be a simple function for. Is there a way to do this?

I am trying to reformat a text file so I can use it with the pandas function but this requires my data to be in a specific format.

Currently my data is in the following format of a txt file with over 1000 lines of data:

["01/09/21","00:28",7.1,75,3.0,3.7,3.7,292,0.0,0.0,1025.8,81.9,17.1,44,3.7,4.6,7.1,0,0,0.00,0.00,3.0,0,0.0,292,0.0,0.0]
    ["01/09/21","00:58",7.0,75,2.9,5.1,5.1,248,0.0,0.0,1025.9,81.9,17.0,44,5.1,3.8,7.0,0,0,0.00,0.00,1.9,0,0.0,248,0.0,0.0
    ]["01/09/21","01:28",6.9,74,2.6,4.1,4.1,248,0.0,0.0,1025.8,81.9,17.0,44,4.1,4.1,6.9,0,0,0.00,0.00,2.5,0,0.0,248,0.0,0.0

I need it as

["01/09/21","00:28",7.1,75,3.0,3.7,3.7,292,0.0,0.0,1025.8,81.9,17.1,44,3.7,4.6,7.1,0,0,0.00,0.00,3.0,0,0.0,292,0.0,0.0]
["01/09/21","00:58",7.0,75,2.9,5.1,5.1,248,0.0,0.0,1025.9,81.9,17.0,44,5.1,3.8,7.0,0,0,0.00,0.00,1.9,0,0.0,248,0.0,0.0]

This requires adding a [" at the start and adding a " at the end of the date before the comma, then adding another " after the comma and another " at the end of the time section. At the end of the line, I also need to add a ], at the end.

I thought something like this would work but the second bracket appears after the line break (\n) is there any way to avoid this?

infile=open(infile)

outfile=open(outfile, 'w')


def format_line(line):
    elements = line.split(',') # break the comma-separated data up
    for k in range(2):
        elements[k] = '"' + elements[k] + '"' # put quotes around the first two elements
        print(elements[k])
    new_line = ','.join(elements) # put them back together
    return '[' + new_line + ']' # add the brackets

for line in infile:
    outfile.write(format_line(line))
outfile.close()

1 Answers1

0

You are referring to a function before it is defined.

Move the definition of format_line before it is called in the for loop.

When I rearranged your code it seems to work.

New code:

outfile=open("outputfile","w")

def format_line(line):
    elements = line.split(',') # break the comma-separated data up
    for k in range(2):
        elements[k] = '"' + elements[k] + '"' # put quotes around the first two elements
    new_line = ','.join(elements) # put them back together
    return '[' + new_line + ']' # add the brackets

for line in infile:
    format_line(line)
belfner
  • 232
  • 1
  • 8