2014-10-29 3 views
2

Здравствуйте, у меня есть база данных, из которой я пытаюсь быстро создать CSV-файл.Python добавляет пустой/пустой столбец. csv

мои данные выглядят следующим образом.

Song_Name,File_Name,Artist_Name,Artist_ID 
Song1,filename1,artistname,artist001 
Song1,filename1,artistname,artist001 
Song1,filename1,artistname,artist001 
Song1,filename1,artistname,artist001 

и вот как это необходимо.

Song_Name,,File_Name,Artist_Name,,Artist_ID 
Song1,,filename1,artistname,,artist001 
Song1,,filename1,artistname,,artist001 
Song1,,filename1,artistname,,artist001 
Song1,,filename1,artistname,,artist001 

Какой был бы лучший способ для этого. Спасибо.

+0

просто вставить в каждую строку по индексу и написать комментарий –

+0

Padraic является не очень полезно, но как должное, так же ожидать, что вы показываете, что вы попытался сделать первым. Не могли бы вы уточнить, что вы пробовали? – ericmjl

+0

@ericmjl, как это не полезно? это именно то, что нужно сделать –

ответ

-1

Вот мой ответ, чтобы помочь вам.

Во-первых, я бы предложил использовать Pandas в среде IPython, а не встроенный в CSV-считыватель Python. Pandas предоставляет некоторые мощные средства для перебора табличных данных. Тем не менее, вот что вы можете сделать, используя встроенный CSV-модуль Python.

with open('data.csv', 'r') as infile: 
    with open('data_out.csv', 'w') as outfile: 
     for line in csv.reader(infile): 
      newline = [] 
      for element in line: 
       if line.index(element) in [1, 3]: # crucial part here: identify where you want to make insertions 
        newline.append(' ') 
       newline.append(element) 
      print(newline) 
      csv.writer(outfile).writerow(newline) 

В качестве оценки между идти ли панда против просто итерации над файлом, это Сорт зависит - от моего собственного опыта, я обнаружил значительные накладные расходов памяти при загрузке большого файла CSV в панд, поэтому я переключился вместо этого обрабатывать мои файлы данных с использованием встроенных модулей Python. Тем не менее, я, возможно, еще недостаточно освоил Панд. :-)

0

По словам Padraic Cunningham just insert into each row by index and write

with open('data.csv', 'r') as fdin, open('out.csv', 'w') as fdout: 
    for line in csv.reader(fdin): 
     # insert into each row by index 
     line.insert(1, '') 
     # and write 
     csv.writer(fdout).writerow(newline) 
Смежные вопросы