Экспорт результата API в файл CSV (разграничение правильного пути?)

1

У меня возникли проблемы с экспортом результата API ниже в файл csv. Мне кажется, что разделитель "," (3-символьный). Каков наилучший способ разграничения результата и создания чистого CSV файла?

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

CSV файл:

Например, как вы можете видеть на рисунке ниже, экспортированный файл csv имеет 4 значения адреса, которые разделены в 4 разных ячейках (также содержащие имя столбца - AddressLine2)

(Я изначально вводил 4 строки).

Изображение 174551

Результат API (from request.get):

{ "CASSReportLink": "https://smartmover.melissadata.net/v3/Reports/CASSReport.aspx?tkenrpt=YvBDs39g52jKhLJyl5RgHKpuj5HwDMe1pE2lcQrczqRiG3/3y5yMlixj5S7lIvLJpDyAOkD8fE8vDCg56s3UogNuAkdTbS2aqoYF5FvyovUjnXzoQaHaL8TaQbwyCQ2RHVDSbt7tI8uGzEWwEIEwt6acz9MoXfDckO7OTUvVcuA=", "NCOAReportLink": "https://smartmover.melissadata.net/v3/Reports/NCOAReport.aspx?tkenrpt=8anQa424W7NYg8ueROFirapuj5HwDMe1pE2lcQrczqRiG3/3y5yMlixj5S7lIvLJpDyAOkD8fE8vDCg56s3UogNuAkdTbS2aqoYF5FvyovUjnXzoQaHaL8TaQbwyCQ2RHVDSbt7tI8uGzEWwEIEwt6acz9MoXfDckO7OTUvVcuA=","Records":[{"AddressExtras":"","AddressKey":"78704,78704","AddressLine1 ":",, СТЭ С-100", "AddressLine2": "1009 W MONROE ST, 1600 S 5TH ST, 1008 W MILTON ST, 3939 BEE CAVES RD", "AddressTypeCode": "", "BaseMelissaAddressKey": "", "CarrierRoute": "", "City": "Остин, Остин, Остин, Остин", "CityAbbreviation": "Остин, Остин, Остин, Остин", "CompanyName": "", "CountryCode": "US", "CountryName": "Соединенные Штаты", DeliveryIndicator ":" " "DeliveryPointCheckDigit": ""," DeliveryPointCode ":" " "MelissaAddressKey": "", "MoveEffectiveDate": "", "MoveTypeCode": "", "PostalCode": "78704,78704,78704,78746", "RecordID": "1"," Результаты ":" AE07 "," State ":" "," StateName ":" TX, TX, TX, TX "," Urbanization ":" "}]," TotalRecords ":" 1 "," TransmissionReference ":" 1353 "," TransmissionResults ":" "," Version ":" 4.0.4.48 "} [Закончено в 1.1s]

Мой код:

import requests
import json
import pandas as pd
import numpy as np


df = pd.read_csv(r"C:\users\testu\documents\travis_test.csv",delimiter = ',',na_values="nan")

url = 'https://smartmover.melissadata.net/v3/WEB/SmartMover/doSmartMover' 
payload = {'t': '1353', 'id': '138fg88jr3r', 'jobid': '1', 'act': 'NCOA, CCOA', 'cols': 'AddressLine1,AddressLine2,City,PostalCode,Results,State', 'opt': 'ProcessingType: Standard', 'List': 'test', 'full': df["appr_owner_name"], 'a1': df["prop_year_addr_line1"], 'a2': df["prop_year_addr_line2"], 'city': df["prop_addr_city"], 'state': df["prop_addr_state"], 'postal': df["prop_addr_zip"], 'ctry': 'USA'}

response = requests.get(
    url, params=payload,
    headers={'Content-Type': 'application/json'} # Using JSON here for readability in the response
)


r = response.text
print(r)

with open(r'C:\users\testu\documents\travis3.csv', 'w+') as f:
    f.write(r)
  • 0
    Но вы не используете импортированный вами модуль csv ...
Теги:
csv

1 ответ

0
Лучший ответ

Ваше возвращаемое значение API не в формате csv, оно находится в формате json. Вы не можете просто записать его в файл.

Вы должны действительно прочитать его как json, извлечь данные и отформатировать их так, как вы хотите, в вашем CSV файле. Пример:

r = response.json
with open(r'C:\users\testu\documents\travis3.csv', 'w+') as f:
    cf = csv.writer(f)
    cf.writerow(r['Records'][0]['AddressLine2'].split(','))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню