Python 3 конвертировать список в CSV - PullRequest
0 голосов
/ 15 мая 2018

У меня есть код ниже

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)

Как я могу преобразовать его в CSV-файл с ключами объекта в качестве имен столбцов?

Вывод, полученный из кода, выглядит следующим образом:

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

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Я почти на основе кода, найденного в предложенном дубликате. Единственная проблема заключается в том, что между каждой строкой остается пустой ряд.

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)

    keys = flights[0].keys()
    with open('filteredData.csv', 'w') as output_file:
        dict_writer = csv.DictWriter(output_file, keys)
        dict_writer.writeheader()
        dict_writer.writerows(flights)

enter image description here

0 голосов
/ 16 мая 2018

Один из известных мне способов решения этой проблемы требует небольшой работы: сначала сохраните код Python в место, где вы можете легко настроить файл.Теперь я довольно долго с этим и, возможно, есть и другие способы, но.

outfile = open ("STRING NAME.csv","w")

Создает файл CSV с помощью «Строкового имени». CSV облегчит открытие файла

outfile.write(value)
outfile.write(",")

разделит все запятыми и в конце каждой строкичто вы хотите написать

outfile.write("\n")

создаст новую строку для csv

outfile.close()

, чтобы завершить ее

надеюсь, это поможет

пример того, где я использовал раньше

        while h<=math.sqrt(float(d)):
        if float(d/(h*h))!=float(int(d/(h*h))):
            h=h+1
        else:
            j=h
            h=h+1
    if j==int(1) or int(d/(j*j))==1:
        a=a
    else:
        if j/2==int(j/2):
            a=a
        else:     
            outfile.write(str(int(b)))
            outfile.write(",")
            outfile.write(str(int(c)))
            outfile.write(",")
            outfile.write(str(int(d)))
            outfile.write(",")
            outfile.write(str(int(g)))
            outfile.write(",")
            outfile.write(str(int(j)))
            outfile.write(",")
            outfile.write(str(int(d/(j*j))))
            outfile.write(",")
            print("b=",int(b)," and c=",c)
            print(float(d)," has a square root of ",float(j)," rad ",float(d/(j*j)))
        a=a+1
    if a==16:
        z=input("SO....")
        if z==str("good"):
            a=16
        else:
            a=1
            print("Fui")
            outfile.write("Bad")
            outfile.write("\n")
    while a==16 and p<10:
        outfile.write("\n")
        p=p+1
        print("new line")
        a=1
outfile.close()
...