Как работать с экспортом данных в CSV, если второй файл имеет новый заголовок с данными - PullRequest
0 голосов
/ 17 января 2019

Скажем, у меня есть 10 CSV-файлов, все из которых содержат похожие данные о компаниях, однако, в зависимости от компании, у одного может быть дата роспуска, а у другого может быть дополнительная адресная строка и т. Д. Мой вопрос заключается в том, как эффективно проверить текущий заголовки csv, в которые я экспортирую, и добавляйте новые заголовки в нужных местах, если мне нужно.

Это мой текущий код

import os
import csv
import requests
csvfile = "/home/User/data.csv"

# writes headers from headers.csv in preparation 
def write_headers():
    with open('/home/User/Documents/headers.csv') as csv_file:
        csv_reader = csv.reader(csv_file)
        rows = list(csv_reader)
        with open(csvfile, "w") as fp:
            wr = csv.writer(fp)
            row = rows[0]
            wr.writerow(row)

# writes row 2 from the downloaded csv as thats the row that contains the data
def write_rows(infile):
    with open(infile) as csv_file:
        csv_reader = csv.reader(csv_file)
        rows = list(csv_reader)
        with open(csvfile, "a") as fp:
            wr = csv.writer(fp)
            row = rows[1]
            wr.writerow(row)

# downlods csv file 
def download(url, file_name):
    with open(file_name, "wb") as file:
        response = requests.get(url)
        file.write(response.content)

# saves the data to data.csv and then deletes the downloaded csv
def save_to_csv(comnum):
    download("http://data.companieshouse.gov.uk/doc/company/" + comnum + ".csv",
             "/tmp//" + comnum + ".csv")
    write_rows("/tmp//" + comnum + ".csv")
    os.remove("/tmp/" + comnum + ".csv")

Так что я могу позвонить save_to_csv с номером компании для поиска, скажем, 00000006

save_to_csv(00000006)

но у него есть дата роспуска, тогда как;

save_to_csv(00000118)

нет. Поэтому данные в строке для столбцов не совпадают, так как я не знаю, как проверить, вставляются ли данные под тем же заголовком или нет. Есть ли библиотека, которая может сделать это, или мне нужно написать что-то, что может извлечь заголовки, переписать их и затем как-то перепроверить данные? Любая помощь очень ценится:)

...