我正在尝试将字典列表导出到excel,以便csv文件每个变量具有一列,并具有所有键的对应值。
我尝试尝试导出词典字典,而不是导出包含字典的列表列表,但它们似乎都不起作用。我该怎么办?
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)
我期望如上所述的最终csv。但是,在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 :(得分:0)
字典列表可以正常工作:
config_api.js:63 Uncaught Error: Cannot find module './../src/AreaChart'
at Function.webpackEmptyContext [as resolve] (notes sync:2)
at Module../packages/recharts/notes/Basic.js (Basic.js:22)
at __webpack_require__ (bootstrap:790)
at fn (bootstrap:150)
at Module.<anonymous> (Basic.js:58)
at Module../packages/recharts/stories/index.story.js (index.story.js:8)
at __webpack_require__ (bootstrap:790)
at fn (bootstrap:150)
at webpackContext (packages sync .story.js$:9)
at config.js:16
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
答案 1 :(得分:0)
您可以很容易地从词典列表中创建一个数据框,并将其写入文件中(在他的解决方案中,对列表理解的很好的工作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')