मैं एक्सेल में शब्दकोशों की एक सूची निर्यात करने की कोशिश कर रहा हूं, जैसे कि सीएसवी फ़ाइल में प्रति चर एक कॉलम होगा, जिसमें सभी चाबियों के संबंधित मान होंगे।

मैंने इसके बजाय शब्दकोशों का एक शब्दकोश निर्यात करने का प्रयास किया है, और प्रत्येक शब्दकोश के साथ सूचियों की एक सूची, लेकिन उनमें से कोई भी काम नहीं कर रहा है। मुझे क्या करना चाहिए?

url_test = 'http://app.parlamento.pt/webutils/docs/doc.txt?path=6148523063446f764c324679626d56304c3239775a57356b595852684c3052685a47397a51574a6c636e5276637939535a576470633352764a544977516d6c765a334c446f575a705932387657456c4a535355794d45786c5a326c7a6247463064584a684c314a6c5a326c7a644739436157396e636d466d61574e7657456c4a53563971633239754c6e523464413d3d&fich=RegistoBiograficoXIII_json.txt&Inline=true'

r_test = requests.get(url_test)

mps = cont['RegistoBiografico']['RegistoBiograficoList']['pt_ar_wsgode_objectos_DadosRegistoBiograficoWeb']

result = {}

for j in mps:
     ID = j['cadId']
     Nome = j['cadNomeCompleto']
     Sexo = j['cadSexo']
     resultf = {'ID':ID, 'Nome':Nome, 'Sexo':Sexo}
     result.append(resultf)

with open('bio_json.csv', 'w') as outfile:
    writer = DictWriter(outfile, ('ID', 'Nome', 'Sexo', 'Profissao', 'Legislatura'))
    writer.writerows(result)

जैसा कि ऊपर वर्णित है, मैं एक अंतिम सीएसवी की अपेक्षा करता हूं। हालांकि, writer.writerows(result) के बाद, मुझे यह संदेश मिलता है:

File "C:\Users\fnac\Desktop\Universidade do Minho\Software\lib\csv.py", line 158, in writerows
    return self.writer.writerows(map(self._dict_to_list, rowdicts))
  File "C:\Users\fnac\Desktop\Universidade do Minho\Software\lib\csv.py", line 148, in _dict_to_list
    wrong_fields = rowdict.keys() - self.fieldnames
AttributeError: 'list' object has no attribute 'keys'
0
João Jerónimo 18 अक्टूबर 2019, 12:48

2 जवाब

सबसे बढ़िया उत्तर

डिक्ट्स की एक सूची ठीक काम करती है:

import requests
import csv

resp = requests.get(
    "http://app.parlamento.pt/webutils/docs/doc.txt?path=6148523063446f764c324679626d56304c3239775a57356b595852684c3052685a47397a51574a6c636e5276637939535a576470633352764a544977516d6c765a334c446f575a705932387657456c4a535355794d45786c5a326c7a6247463064584a684c314a6c5a326c7a644739436157396e636d466d61574e7657456c4a53563971633239754c6e523464413d3d&fich=RegistoBiograficoXIII_json.txt&Inline=true"
)
resp.raise_for_status()
data = resp.json()

mps = data["RegistoBiografico"]["RegistoBiograficoList"]["pt_ar_wsgode_objectos_DadosRegistoBiograficoWeb"]

result = [
    {
        "ID": j["cadId"],
        "Nome": j["cadNomeCompleto"],
        "Sexo": j["cadSexo"],
    }
    for j in mps
]

with open("bio_json.csv", "w") as outfile:
    writer = csv.DictWriter(
        outfile,
        ("ID", "Nome", "Sexo", "Profissao", "Legislatura"),
    )
    writer.writerows(result)

bio_json.csv दिखता है

2167,ABEL LIMA BAPTISTA,M,,
3,ADÃO JOSÉ FONSECA SILVA,M,,
462,ALBERTO DE SOUSA MARTINS,M,,
...
0
AKX 18 अक्टूबर 2019, 12:55

आप आसानी से शब्दकोशों की सूची से डेटाफ्रेम बना सकते हैं और फ़ाइल में लिख सकते हैं (उसके समाधान में सूची समझ पर अच्छा काम AKX)।

import requests
import pandas as pd

resp = requests.get(
    "http://app.parlamento.pt/webutils/docs/doc.txt?path=6148523063446f764c324679626d56304c3239775a57356b595852684c3052685a47397a51574a6c636e5276637939535a576470633352764a544977516d6c765a334c446f575a705932387657456c4a535355794d45786c5a326c7a6247463064584a684c314a6c5a326c7a644739436157396e636d466d61574e7657456c4a53563971633239754c6e523464413d3d&fich=RegistoBiograficoXIII_json.txt&Inline=true"
)
resp.raise_for_status()
data = resp.json()

mps = data["RegistoBiografico"]["RegistoBiograficoList"]["pt_ar_wsgode_objectos_DadosRegistoBiograficoWeb"]

result = [
    {
        "ID": j["cadId"],
        "Nome": j["cadNomeCompleto"],
        "Sexo": j["cadSexo"],
        "Profissao": "", 
        "Legislatura": ""
    }
    for j in mps
]

df = pd.DataFrame(result)
df.to_csv('bio_json.csv')

या सिर्फ एक पंक्ति में:

pd.DataFrame(result).to_csv('bio_json.csv')
0
chitown88 18 अक्टूबर 2019, 15:08