2015-10-29 6 views
1

мой CSV составляет от Блумберга, его формат, как это:Как унифицировать формат данных CSV-файла на том же столбце

Time Interval,Close,Net Chg,Open,High,Low,Tick Count,Volume 
05SEP2012,,,,,,, 
09:15 - 09:30,97.722,0,98.34,98.34,97.722,2,37155 
09:30 - 09:45,97.899,0.177,98.164,98.164,97.281,102,101725 
09:45 - 10:00,97.722,-0.177,97.899,97.899,97.193,32,39874 
06SEP2012,,,,,,, 
09:15 - 09:30,98.076,0.883,98.076,98.076,98.076,1,22429 
09:30 - 09:45,97.193,-0.883,97.634,97.987,97.104,72,67741 
09:45 - 10:00,96.928,-0.265,97.193,97.193,96.751,80,148963... 

Если я хочу, чтобы унифицировать формат, так что [дата XX/XX/201X + время XX: XX-XX: XX] становится ключевым для сравнения, может быть, выглядит как:

Date,Time Interval,Close,Net Chg,Open,High,Low,Tick Count,Volume 
05SEP2012,,,,,,,, 
05SEP2012,09:15 - 09:30,97.722,0,98.34,98.34,97.722,2,37155 
05SEP2012,09:30 - 09:45,97.899,0.177,98.164,98.164,97.281,102,101725 
05SEP2012,09:45 - 10:00,97.722,-0.177,97.899,97.899,97.193,32,39874 
06SEP2012,,,,,,,, 
06SEP2012,09:15 - 09:30,98.076,0.883,98.076,98.076,98.076,1,22429 
06SEP2012,09:30 - 09:45,97.193,-0.883,97.634,97.987,97.104,72,67741 
06SEP2012,09:45 - 10:00,96.928,-0.265,97.193,97.193,96.751,80,148963... 

кто-нибудь может сказать мне, что код я должен написать, пожалуйста? Я очень новичок в программировании и пытаюсь написать программу python о парной торговле для школьного проекта. Содержание этого article является моей основной ссылкой, и при вводе данных он не может вводить данные csv, которые мы собираем.

ответ

0
for python 3 

import csv 
    with open('data.csv', 'r', newline='') as f, open('data_out.csv', 'w', newline='') as f_out: 
     reader = csv.reader(f,quotechar='"') 
     # read headers 
     headers = next(reader) 
     # insert new column name 
     headers.insert(0,"Date") 

     w = csv.writer(f_out, delimiter=',') 
     # write headers 
     w.writerow(headers) 

     for line in f: 
      if ',,,' in line: 
       newcolumn = line 
       newcolumn = line.strip() 
       newcolumn = newcolumn.replace(',','') 
       f_out.write(line) 
      else: 
       line = newcolumn + ',' + line.strip() 
       line = line.split(',') 
       w.writerow(line) 

for python 2.7 

import csv 
with open('data.csv', 'rb') as f, open('data_out.csv', 'wb') as f_out: 
    reader = csv.reader(f,quotechar='"') 
    # read headers 
    headers = next(reader) 
    # insert new column name 
    headers.insert(0,"Date") 

    w = csv.writer(f_out, delimiter=',') 
    # write headers 
    w.writerow(headers) 

    for line in f: 
     if ',,,' in line: 
      newcolumn = line 
      newcolumn = line.strip() 
      newcolumn = newcolumn.replace(',','') 
      f_out.write(line) 
     else: 
      line = newcolumn + ',' + line.strip() 
      line = line.split(',') 
      w.writerow(line) 

    Date,Time Interval,Close,Net Chg,Open,High,Low,Tick Count,Volume 
    05SEP2012,,,,,,, 
    05SEP2012,09:15 - 09:30,97.722,0,98.34,98.34,97.722,2,37155 
    05SEP2012,09:30 - 09:45,97.899,0.177,98.164,98.164,97.281,102,101725 
    05SEP2012,09:45 - 10:00,97.722,-0.177,97.899,97.899,97.193,32,39874 
    06SEP2012,,,,,,, 
    06SEP2012,09:15 - 09:30,98.076,0.883,98.076,98.076,98.076,1,22429 
    06SEP2012,09:30 - 09:45,97.193,-0.883,97.634,97.987,97.104,72,67741 
    06SEP2012,09:45 - 10:00,96.928,-0.265,97.193,97.193,96.751,80,148963 
+0

жаль упомянуть, что я использую Python 2.7, может у перевести код в 2.7? –

+0

@YuiHungCheung без проблем. Я добавил код теперь и для 2.7, он был протестирован на 2.7. – LetzerWille

+0

большое спасибо –

0
# First open your file: 
csv_file = open(path_to_file, 'r') 

# Initialize list to hold the rows 
rows = [] 

# For each line in your file, split values into a list and add to the rows list 
for line in csv_file: 
    rows.append(line.split(',')) 

Теперь каждый элемент строки будет список с аналогичной структурой. Вы можете сравнить аналогичные «ячейки» - скажем, первый столбец в первом и втором строках:

строк [1] ​​[0] vs rows [2] [0], помните, что индексы списка основаны на нуле.

Надеется, что это поможет вам на вашем пути,

веселит

+0

Это очень простое решение, которое может дать вам то, что вам нужно, и, прежде всего, очень легко понять. Но недостатком является то, что вы не получите заголовки. Для этого вам может потребоваться рассмотреть модуль csv, как предложено LetzerWille. –

+0

большое спасибо –

Смежные вопросы