从API到CSV的数据处理

2024-09-30 20:31:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个从API获取数据并写入CSV的代码。但是,当我从API中更改数据时,数据不会更新(比如获取不同汽车的数据)。似乎“struct”变量是硬编码的,不会改变。我希望格式保持不变,但只是根据传递的数据进行更新

API输出数据:

FoundCategories[]
PageSize1
Page1
List[{'ExteriorColour': None, 'CategoryPath': '/Trade-Me-Motors/Cars/Bentley', 'Subtitle': 'sdf', 'BestContactTime': None, 'StartPrice': 100.0, 'Doors': 0, 'Fuel': None, 'BodyStyle': 'Coupe', 'WofExpires': '/Date(0)/', 'NumberPlate': None, 'ImportHistory': None, 'Transmission': 'Manual', 'EngineSize': 0, 'ListingLength': None, 'StereoDescription': None, 'Category': '0001-0268-7081-', 'Title': 'Bentley Continental 1999', 'Owners': 0, 'IsDealer': False, 'Cylinders': 0, 'AsAt': '/Date(1457728757951)/', 'Odometer': 2000, 'Vin': None, 'Year': 1999, 'StartDate': '/Date(1457326119847)/', 'Region': 'Manawatu', 'Model': 'Continental', 'PriceDisplay': '$100.00', 'Suburb': 'Palmerston North', 'EndDate': '/Date(1457930919847)/', 'RegistrationExpires': '/Date(0)/', 'NoteDate': '/Date(0)/', 'ListingId': 4550689, 'Make': 'Bentley'}]
TotalCount1

要写入csv的代码

r3 = requests.get('https://api.website.com', params=myhheadersaders2)

struct = r3.json()

car_data = struct.get('List')
fieldnames=car_data[0].keys()

struct = {'TotalCount': 1, 'PageSize': 1, 'FoundCategories': [], 'Page': 1, 'List': [{'AsAt': '/Date(1457733660023)/', 'Model': 'Continental', 'Suburb': 'Palmerston North', 'NoteDate': '/Date(0)/', 'PriceDisplay': '$100.00', 'EndDate': '/Date(1457930919847)/', 'RegistrationExpires': '/Date(0)/', 'StartPrice': 100.0, 'Owners': 0, 'ListingLength': None, 'CategoryPath': '/Trade-Me-Motors/Cars/Bentley', 'ListingId': 4550689, 'Subtitle': 'sdf', 'Category': '0001-0268-7081-', 'StartDate': '/Date(1457326119847)/', 'Year': 1999, 'WofExpires': '/Date(0)/', 'ExteriorColour': None, 'Vin': None, 'EngineSize': 0, 'Doors': 0, 'BodyStyle': 'Coupe', 'Title': 'Bentley Continental 1999', 'IsDealer': False, 'Make': 'Bentley', 'Transmission': 'Manual', 'Fuel': None, 'ImportHistory': None, 'Odometer': 2000, 'StereoDescription': None, 'Region': 'Manawatu', 'BestContactTime': None, 'Cylinders': 0, 'NumberPlate': None}]}



car_info = struct.get('List')
with open('car_info.csv', 'w') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=car_info[0].keys())

    writer.writeheader()
    for row in car_info:
        writer.writerow(row)

Tags: csv数据代码infononeapigetdate
1条回答
网友
1楼 · 发布于 2024-09-30 20:31:38

您正在代码中覆盖从API接收的数据,因为您一直在使用struct变量。你知道吗

看起来您正在用一个示例数据集调试csv编写的代码,然后在添加从API获取数据的部分时忘记删除该部分代码。你知道吗

我已经清理了您的代码并注释掉了导致将相同信息写入输出的重复行:

r3 = requests.get('https://api.website.com', params=myhheadersaders2)
struct = r3.json()  # this is the data from the API

car_data = struct.get('List')
fieldnames=car_data[0].keys()

# now you are simply overwriting it with some sample data,
# ignoring whatever is returned from the API
# struct = {'TotalCount': 1, ...}]}

# this is the same as car_data = struct.get('List')
# car_info = struct.get('List')

with open('car_info.csv', 'w') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(car_data)

相关问题 更多 >