2015-11-02 2 views
0

У меня есть файлы gzip, которые являются CSV-файлами. Поэтому я не использую модуль csv.Как избежать запятых при чтении CSV-файлов с помощью Python?

Некоторые поля символов заключены в двойные кавычки: ", но не все из них. Моя цель - прочитать строки и в основном скопировать данные в другой файл. Некоторые из полей, которые содержат двойные кавычки, содержат в них запятые, и мой скрипт неправильно игнорирует запятые внутри кавычек. Как установить его, чтобы Python игнорировал символы в двойных кавычках?

Это часть кода, относящегося к вопросу:

with gzip.open('gzippedfile.csv.gz', 'r') as campaign, open('output%s.csv' % today, 'wb') as output: 
     outputwriter = csv.writer(output, delimiter=',') 

    #Create variable 'count' to hold counter to skip reading the header line in the input file 
     count = 0 

     for line in campaign: 
       line=line.replace('\"','') 
       line=line.replace('\'','') 
       #print line 
       #Increment count by one each loop. This will make the loop skip the header line at the first iteration 
       count = count+1 
       if count == 1: 
         continue  
       #print today 
     #Create strings of the campaignid, whitelist entry, blacklist entry, and zipcode list each row 
       campaignid = line.split(',')[0].lstrip() 
       whitelist = line.split(',')[10].lstrip() 
       blacklist = line.split(',')[11] 
       zipcodes = line.split(',')[12] 

Я попытался удалить replace линии 8 и 9, но это не решает проблему.

ответ

4

Почему вы не используете csv.reader с файловым дескриптором от gzip.open?

with gzip.open('gzippedfile.csv.gz', 'r') as campaign, open('output%s.csv' % today, 'wb') as output: 
    reader = csv.reader(campaign) # look ma' no manual escaping 
    outputwriter = csv.writer(output, delimiter=',') 
+0

О, не знал, что смогу это сделать. Можно ли читать каждую строку в виде строки? Кажется, что «читатель» загружает данные в список строк. – simplycoding

+0

Вся цель объекта-читателя заключается в том, что поля в строке предварительно анализируются в список, в котором индекс списка представляет номер столбца, основанный на 0. –

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