2014-11-24 3 views
0

У меня есть некоторые данные, которые необходимо записать в файл CSV. Ниже приведены данныеОтдельные данные с запятой CSV Python

A  ,B ,C 
a1,a2 ,b1 ,c1 
a2,a4 ,b3 ,ct 

В первой колонке есть запятая внутри. Все данные находятся в списке, который я хотел бы записать в файл CSV, разделенный запятыми и не мешая данным в столбце A. Как я могу это сделать? Упоминание delimiter = ',' разбивает его на четыре столбца в целом.

+0

, что делает ваш фактический список выглядит? Является ли каждая строка строкой? –

+0

@ ДавидМаркс Да. Похоже на это ['A', 'B', 'C'] ['a1, a2', 'b1', 'c1'] ['a2, a4', 'b3', 'ct'] – abn

+0

@vanandy Каков ваш ожидаемый результат? –

ответ

2

Просто используйте csv.writer от модуля csv.

import csv 

data = [['A','B','C'] 
     ['a1,a2','b1','c1'] 
     ['a2,a4','b3','ct']] 

fname = "myfile.csv"  
with open(fname,'wb') as f: 
    writer = csv.writer(f) 
    for row in data: 
     writer.writerow(row) 

https://docs.python.org/2/library/csv.html#csv.writer

+0

Файл-файл должен быть '' wb'' now 'w' ... (и вы также можете использовать' writer.writerows (data) ', чтобы избежать явного цикла' for') –

+0

, поэтому он должен, спасибо. также не имел его котировки: p –

+0

как вы получаете список данных, как указано выше, из файла csv? –

0

Нет необходимости использовать csv модуль, так как «» в первом столбце уже часть ваших данных, это будет работать:

with open('myfile.csv', 'w') as f: 
    for row in data: 
     f.write(', '.join(row)) 
     f.write('\n') 
0

Вы можете попробовать ниже.

Код:

import csv 
import re 
with open('infile.csv', 'r') as f: 
    lst = [] 
    for line in f: 
     lst.append(re.findall(r',?(\S+)', line)) 
    with open('outfile.csv', 'w', newline='') as w: 
     writer = csv.writer(w) 
     for row in lst: 
      writer.writerow(row) 

Выход:

A,B,C 
"a1,a2",b1,c1 
"a2,a4",b3,ct 
+0

зачем вам 'sys'? – vks