You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python3筛选后的航班列表转为以对象键为列名的CSV文件

如何将Python字典列表转换为以键为列名的CSV文件?

我编写了如下Python代码:

import requests, json 
r = requests.get('http://someurl.com/api') 
data = r.json() 
flights = [] 
for flight in data: 
    # print(flight['identifier']) 
    if flight['STDudt'].strip() < flight['ETDudt'].strip() and flight['OUTudt'].strip() == '': 
        flights.append(flight) 
print(flights)

目前代码输出的flights列表格式如下:

[{'numGMTDate': '20180515', 'STDudt': '1405', 'STAudt': '1545', 'ETDudt': '1415', 'OUTudt': '', 'OFFudt': ''},{'numGMTDate': '20180515', 'STDudt': '1530', 'STAudt': '1831', 'ETDudt': '1540', 'OUTudt': '', 'OFFudt': ''}]

请问如何将该列表转换为以对象的键作为列名的CSV文件?


两种实用方法帮你搞定需求

方法1:用Python内置csv模块(无额外依赖)

如果不想引入第三方库,标准库的csv模块完全能胜任。核心逻辑是先把字典的键提取出来当表头,再逐行写入数据:

import csv

# 假设你的flights列表已经生成完成
flights = [{'numGMTDate': '20180515', 'STDudt': '1405', 'STAudt': '1545', 'ETDudt': '1415', 'OUTudt': '', 'OFFudt': ''},{'numGMTDate': '20180515', 'STDudt': '1530', 'STAudt': '1831', 'ETDudt': '1540', 'OUTudt': '', 'OFFudt': ''}]

# 先检查列表是否为空,避免报错
if flights:
    # 取第一个字典的键作为CSV表头
    fieldnames = flights[0].keys()
    
    # 打开文件准备写入,newline=''避免生成空行
    with open('flights.csv', 'w', newline='', encoding='utf-8') as csvfile:
        # 创建DictWriter对象,指定表头
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        
        # 写入表头行
        writer.writeheader()
        # 逐个写入字典数据
        for flight in flights:
            writer.writerow(flight)

运行后就能得到以字典键为列名的CSV文件啦。

方法2:用pandas库(简洁高效,适合大数据)

如果日常会处理数据,用pandas会更省心,几行代码就能搞定:

先安装pandas(没装过的话):

pip install pandas

然后编写转换代码:

import pandas as pd

# 假设你的flights列表已生成
flights = [{'numGMTDate': '20180515', 'STDudt': '1405', 'STAudt': '1545', 'ETDudt': '1415', 'OUTudt': '', 'OFFudt': ''},{'numGMTDate': '20180515', 'STDudt': '1530', 'STAudt': '1831', 'ETDudt': '1540', 'OUTudt': '', 'OFFudt': ''}]

# 转成DataFrame后直接保存为CSV,index=False去掉默认索引列
df = pd.DataFrame(flights)
df.to_csv('flights_pandas.csv', index=False, encoding='utf-8')

两种方法都能满足需求,根据你的场景选就行~

内容的提问来源于stack exchange,提问作者jeesan485

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:05:55