2015-02-19 2 views
0

У меня есть файл csv, который содержит столбец даты, отформатированный как «1929-01-10». Я хотел бы разделить этот огромный файл на отдельные файлы в год. Так что за каждый год в столбце даты отдельный файл csv (в идеале с названием года).Как разбить файл csv на дату с помощью python

Я хотел бы сделать это в Python

+2

Можете ли вы дать нам пример какой-то код, который вы пытались до сих пор? – nicholaschris

+1

Итак, вы хотите разделить контент из основного файла на соответствующий ему csv-файл года? –

+0

дать пару строк пример cvs пожалуйста – Stefano

ответ

4
  1. Получить Src место, где мы должны писать новые файлы. и имя основного CSV-файла
  2. Используйте CSV-модуль для чтения и записи файлов.
  3. Использовать модуль defaultdict для установки каждого типа значения ключа - это список.
  4. Считывание основного файла и повторение каждой строки из.
  5. разделить первый столбец каждой строки на -, чтобы получить значение года.
  6. Используйте значение года в качестве ключа и добавьте строку в словарь результатов.
  7. Теперь у нас есть вся информация в словаре результатов.
  8. Итерации каждого пункта из словаря результатов.
  9. снова использовать CSV-модуль для записи CSV-файла.
  10. Используйте ключ как имя файла.

вход: main.csv

1929-01-10,1,a 
1929-01-10,2,b 
1930-01-10,3,c 
1929-01-10,4,d 
2015-01-10,5,e 
2015-01-10,6,f 
1929-01-10,7,g 
2014-01-10,8,h 

код:

src_path = "/home/vivek/Desktop/Work/stack/" 
main_file = "/home/vivek/Desktop/Work/stack/main.csv" 
import csv 
import collections 
import pprint 

with open(main_file, "rb") as fp: 
    root = csv.reader(fp, delimiter=',') 
    result = collections.defaultdict(list) 
    for row in root: 
     year = row[0].split("-")[0] 
     result[year].append(row) 

print "Result:-"   
pprint.pprint(result) 

for i,j in result.items(): 
    file_path = "%s%s.csv"%(src_path, i) 
    with open(file_path, 'wb') as fp: 
     writer = csv.writer(fp, delimiter=',') 
     writer.writerows(j) 

выход:

Result:- 
defaultdict(<type 'list'>, {'2015': [['2015-01-10', '5', 'e'], ['2015-01-10', '6', 'f']], '1929': [['1929-01-10', '1', 'a'], ['1929-01-10', '2', 'b'], ['1929-01-10', '4', 'd'], ['1929-01-10', '7', 'g']], '1930': [['1930-01-10', '3', 'c']], '2014': [['2014-01-10', '8', 'h']]}) 

некоторый файл результатов в соответствии с входным файлом:

1929.csv

1929-01-10,1,a 
1929-01-10,2,b 
1929-01-10,4,d 
1929-01-10,7,g 

2015.csv

2015-01-10,5,e 
2015-01-10,6,f 
+0

@Melvin Wevers: Это полезно для вас? если у вас есть какие-либо трудности в вышеприведенном коде, я могу получить его в любое время по электронной почте на [email protected], для моего идентификатора skype: vivek.igp –

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