In: Computer Science
PYTHON #What you need to do is to transform the file Mkt_data_test.txt #to the format like in file in the screenshot # #Your steps to get there: #1.Create a header line with following columns: Time;Bid\Ask;Price;Volume. NOTE NO SPACES #2.Remove all of the timestamp lines, i.e ======== Data: ..... #3.Remove the 1900-01-01 from the timestamp but leave the time itself #4.Get rid of all spaces and empty lines #5.Replace 0 or 1 in the second position with Bid or Ask, Bid for 0, Ask for 1 #6.Save the header line and propely formatted lines to the COMMA-SEPARATED csv file named mktDataFormat.csv
The txt file is:
======== Data: 00:05:08.627012 =========
1900-01-01 00:05:08.627012 ; 0 ; 1.16198 ; 10000000.0
1900-01-01 00:05:08.627012 ; 1 ; 1.16232 ; 10000000.0
========= Data: 00:05:12.721536 =========
1900-01-01 00:05:08.627012 ; 0 ; 1.16198 ; 10000000.0
1900-01-01 00:05:12.721536 ; 0 ; 1.16209 ; 1000000.0
1900-01-01 00:05:08.627012 ; 1 ; 1.16232 ; 10000000.0
========= Data: 00:05:12.729989 =========
1900-01-01 00:05:08.627012 ; 0 ; 1.16198 ; 10000000.0
1900-01-01 00:05:12.721536 ; 0 ; 1.16209 ; 1000000.0
1900-01-01 00:05:12.729989 ; 1 ; 1.16218 ; 1000000.0
1900-01-01 00:05:08.627012 ; 1 ; 1.16232 ; 10000000.0
========= Data: 00:05:12.735727 =========
1900-01-01 00:05:08.627012 ; 0 ; 1.16198 ; 10000000.0
1900-01-01 00:05:12.735727 ; 0 ; 1.16208 ; 1000000.0
1900-01-01 00:05:12.729989 ; 1 ; 1.16218 ; 1000000.0
1900-01-01 00:05:08.627012 ; 1 ; 1.16232 ; 10000000.
What I have so far is this:
csvRead = open("Mkt_data_test.txt","r")
lines = csvRead.readlines()
for line in lines[1: ]:
string =
string = string.replace("1900-01-01", "")
string = string.replace("00:","")
string = string.replace(' ', '')
line = string.split(';')
columns = line
colA = columns[0]
colB = columns[1]
colC = columns[2]
allColumns = colA + "." + colB + "." + colC
if line[1] == "1":
line[1] = line[1].replace("1", "Ask")
print(line)
if line[1] == "0":
line[2] = line[2].replace("0", "Bid")
print(line)
print(colA,colB,colC)
#maybe get rid of line below this
def NewArray(data):
return line
print (NewArray(line))
NewArray(line).append(allColumns)
csvRead.close()
csv = open("CSV.csv","w")
header = "Time;Bid\Ask;Price;Volume\n"
csv.write(header)
csv.read(NewArray(line))
csv.close()
I know I need to put the string = to something, but I can't tell what. I know there are some other issues too though and I can't figure out what!
Python code :
import csv
# read the input file 'Mkt_data_test.txt'
with open('Mkt_data_test.txt', 'r') as f, open("edited_file.txt","w") as outfile:
for line in f:
#Remove all of the timestamp lines
if not line.startswith('====='):
#Remove empty lines
if not line.isspace():
#Remove the 1900-01-01
l1 = line.replace('1900-01-01 00:', '')
#Remove all spaces
l2 = l1.replace(' ', '')
#Replace 0 or 1 in the second position with Bid or Ask, Bid for 0, Ask for 1
col = l2.split(";")
if(col[1] == '0'):
col[1] ='Bid'
if(col[1]=='1'):
col[1] = 'Ask'
l3= ';'.join(col)
#write result to another file 'edited_file.txt'
outfile.write(l3)
#convert text file to csv file
with open('edited_file.txt', 'r') as input_file:
stripped = (line.strip() for line in input_file)
lines = (line.split(";") for line in stripped if line)
with open('output.csv', 'w') as output_file:
writer = csv.writer(output_file)
#Create a header line and write it to a csv file
writer.writerow(('Time', 'Bid\Ask', 'Price', 'Volume'))
writer.writerows(lines)
SCREENSHOT 1: INPUT FILE 
SCREENSHOT 2 : INTERMEDIATE EDITED FILE

SCREENSHOT 3 : OUTPUT CSV FILE

SCREENSHOT 4: OUTPUT CSV FILE
