#python
#python
Вопрос:
Я относительно новичок в python, и мне было интересно, могу ли я получить некоторую помощь в анализе данных, чтобы их было легче анализировать.
Мои данные представлены в следующей форме (каждая строка представляет собой целую строку):
20160930-07:06:54.481737|I|MTP_4|CL:BF K7-M7-N7 Restrict for maxAggressive: -4.237195
20160930-07:06:54.481738|I|MTP_4|CL:BF K7-M7-N7 BidPrice: -5.0 mktBestBid: -5.0 bidTheo: -4.096774 bidSeedEdge: 0.195028 bidUnseedEdge: CL:BF K7-M7-N7 = 0.14042 Min Bid: -6.0 Max Ticks Offset: 1 Max Aggressive Ticks: 1
Это мой код до сих пор
# Output file
output_filename = os.path.normpath("Mypath/testList.log")
# Overwrites the file
with open(output_filename, "w") as out_file:
out_file.write("")
# Open output file
with open(output_filename, "a") as out_file:
# Open input file in 'read' mode
with open("mypath/tradedata.log", "r") as in_file:
# Loop over each log line, Grabs lines with necessary data
for line in islice(in_file, 177004, 8349710):
out_file.write(line)
Было бы проще просто пройти и сделать это с помощью ключевых слов, таких как; bidUnseedEdge, mktBesdBid и т.д. ?
Комментарии:
1. Нам нужно немного больше контекста. Анализ данных выполняется для получения некоторого преимущества, например, для изменения типа представления или поиска / фильтрации элементов. Какова цель вашего синтаксического анализа? Пропуск строк, соответствующих некоторым критериям? Просто изменить представление? И если да, то к какому типу?
2. @Alex, какой фактический результат вам нужен?
3. Я пытаюсь получить данные для нашего продукта K7-M7-N7 и соответствующее значение для bidTheo и maxAggressive, чтобы я мог анализировать данные.
4. @Alex, включает ли источник данных и другие продукты? Кроме того, возможно, возникает сложность в понимании того, всегда ли две строки, которые вы показываете здесь, будут отображаться по порядку для одного и того же образца.
5. Все продукты имеют эту форму, и строки повторяются одинаково. В настоящее время я разделяю данные на два файла, так что у меня есть maxAggressive в одном файле и bidTheo в другом, я изо всех сил пытаюсь проанализировать это, чтобы я мог получить соответствующие значения.
Ответ №1:
infilename = "path/data.log"
outfilename = "path/OutputData.csv"
with open(infilename, 'r') as infile,
open(outfilename, "w") as outfile:
lineCounter = 0
for line in infile:
lineCounter = 1
if lineCounter % 1000000 == 0:
print lineCounter
data = line.split("|")
if len(data) < 4:
continue
bidsplit = data[3].split("bidTheo:")
namebid = data[3].split("BidPrice:")
if len(bidsplit) == 2:
bid = float(bidsplit[1].strip().split()[0])
bidname = namebid[0].strip().split(",")[0]
#print "bidTheo," data[0] "," str(bid)
outfile.write("bidTheo," data[0] "," bidname "," str(bid) "n")
offersplit = data[3].split("offerTheo:")
nameoffer = data[3].split("AskPrice:")
if len(offersplit) == 2:
offer = float(offersplit[1].strip().split()[0])
offername = nameoffer[0].strip().split(",")[0]
#print "offerTheo," data[0] "," str(offer)
outfile.write("offerTheo," data[0] "," offername "," str(offer) "n")
print "Done"