2016-04-14 4 views
2

Пытается написать в CSV-файл в течение часа. Проблема с выходом: каждый символ имеет после нее запятую. Я не знаю, почему это происходит, так как я сделал это несколько раз, прежде чемCSV Comma после каждого символа python

id_list = [] 

    with open(outfile1, 'r') as f: 
     reader = csv.reader(x.replace('\0','') for x in f) 

     for row in reader: 
      temp = row 
      try: 
       id = temp[3] 
       id_list.append(id) 

      except (IndexError, csv.Error, KeyError) as e: 
       pass 

    with open(results1, 'w') as f: 
     writer = csv.writer(f) 
     for id in id_list: 
      try: 
       prov_data = getData() 
       if prov_data is None: 
        continue 
       fab = prov_data['results'][0]['fab'] 
       man = prov_data['results'][0]['man'] 
       serv_type = prov_data['results'][0]['serv']   
       writer.writerows([str(id), str(fab), str(man), str(serv_type)]) 
      except (IndexError, KeyError,csv.Error) as e: 
       pass 

ответ

4

Заменить writerows с writerow.

Проблема заключается в том, что writerows ожидает список списков, где каждый внутренний список является строкой для записи. Поскольку вы передаете ему список строк, он считает, что каждый символ в строке является столбцом в файле csv.

Обратите внимание, что вы также не используете id во втором цикле for, и вы открываете файл с именем outfile1 для чтения, поэтому вам может потребоваться переосмыслить ваши имена здесь. Я бы предположил, что вы хотите заменить 0 s в своем втором цикле с id, но я не уверен.

+2

о бог. Спасибо – shapiro

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