Как правильно распечатать файл CSV в python - PullRequest
1 голос
/ 30 января 2020

Я пытаюсь очистить некоторые данные, записать эти данные в файл CSV, а затем импортировать этот файл CSV в R, чтобы провести некоторый анализ. Это больше личный проект для изучения python и R, и у меня возникли некоторые проблемы при печати в файл CSV. То, что у меня есть, распечатывается совершенно хаотично, и R действительно не может использовать данные так, как я хочу. У кого-нибудь есть советы? Вот код для файла csv:

with open('cdc_data.csv','w', newline='',) as f:
   i = 0
   fieldnames = ['Country', 'Infected', 'Deaths']
   thewriter = csv.DictWriter(f, fieldnames=fieldnames)
   print("Country /", end=' ')
   print("Infected /", end=' ')
   print("Deaths /", end=' ')
   print("Location:", end=' ')
   print(" ")
   thewriter.writeheader()
   for x in infectionData:
      while i <= 83:
         print(infectionData[i], end=' ')
         thewriter.writerow({'Country': infectionData[i]})
         i += 1
         print(infectionData[i], end=' ')
         thewriter.writerow({'Infected': infectionData[i]})
         i += 1
         print(infectionData[i], end=' ')
         thewriter.writerow({'Deaths': infectionData[i]})
         i += 1
         print(infectionData[i])
        # thewriter.writerow({'Location': infectionData[i]})
         i += 1

Я добавил, как выглядит текущий вывод, сейчас я пытаюсь получить его, чтобы он выглядел больше так: Страны / Зараженные / Смерти / Местоположение Китай / 1771 / 170 / Asia et c

Вот что выводит print (зараженные данные):

['China', '7,711', '170', 'Asia', 'Thailand', '14', '0', 'Asia', 'Hong Kong', '11', '0', 'Asia', 'Taiwan', '8', '0', 'Asia', 'Macau', '7', '0', 'Asia', 'Malaysia', '7', '0', 'Asia', 'Singapore', '10', '0', 'Asia', 'Japan', '8'

и продолжает работать

Изображение вывода CSV

1 Ответ

1 голос
/ 30 января 2020
import csv

def remove_comma(s):
  return s.replace(',', '')

def export_to_csv(data,filename='cdc_data.csv'):
  with open(filename,'w', newline='',) as f:
    fieldnames = ['Country', 'Infected', 'Deaths', 'Location']
    thewriter = csv.DictWriter(f, fieldnames=fieldnames)
    print(' / '.join(fieldnames))
    thewriter.writeheader()
    i=0
    while i+3<len(data):
      x=data[i:i+4]
      x[1]=remove_comma(x[1])
      x[2]=remove_comma(x[2])
      thewriter.writerow({'Country': x[0],'Infected':x[1],'Deaths':x[2],'Location':x[3]})
      print(' '.join([str(val) for val in x]))
      i+=4

#call it like:
infectionData=['China', '7,711', '170', 'Asia', 'Thailand', '14', '0', 'Asia', 'Hong Kong', '11', '0', 'Asia', 'Taiwan', '8', '0', 'Asia', 'Macau', '7', '0', 'Asia', 'Malaysia', '7', '0', 'Asia', 'Singapore', '10', '0', 'Asia']
export_to_csv(infectionData)

Или вы также можете добавить имя файла, если по умолчанию не в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...