将字典另存为包含可不断添加的列的文件

2024-09-21 05:38:22 发布

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

我在^{}里有一本货币字典here。在

为了简单起见,我将给出一个示例:

{
    "AED": "united Arab Emirates Dirham",
    "AFN": "Afghan Afghani",
    ...
    "ZWL": "Zimbabwean Dollar"
}

我希望将它们添加到一个文件中,以便在不同的时间连续添加不同的货币集。该文件应该有一列代码名称货币(例如“AED”)和另一列名称。在

我真的不知道从哪里开始。如果能帮我指出正确的方向,我将不胜感激。在

我的字典代码如下:

^{pr2}$

Tags: 文件代码名称示例字典here货币united
2条回答

您可以使用^{}轻松处理保存文件的过程。由于DictWriter处理字典,并且json.loads的结果是dict,DictWriter可以简化工作。在

import csv
import json
import urllib.request

def _fetch_currencies():
    f = urllib.request.urlopen('http://openexchangerates.org/api/currencies.json')
    charset = f.info().get_param('charset', 'utf8')
    data = f.read()
    decoded = json.loads(data.decode(charset))
    with open('names.csv', 'w') as csvfile:
        fieldnames = ['code', 'country']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()
        for code, country in decoded.items():
            writer.writerow({'code': code, 'country': country})

您只需将数据保存在^{}中,每种货币有一行:

AED, united Arab Emirates Dirham
AFN, Afghan Afghani
ZWL, Zimbabwean Dollar

为此,您可能需要将字典转换为行,但在本例中,这很简单,因为它只是一对(key, value)

^{pr2}$

但是,请注意,项目将以随机顺序排列,如果要对条目进行排序,可以在写入文件之前对其进行排序:

rows.sort()

最后,使用^{} module

^{4}$

综合起来:

import json
import urllib.request
import csv

def fetch_currencies():
    f = urllib.request.urlopen('http://openexchangerates.org/api/currencies.json')
    charset = f.info().get_param('charset', 'utf8')
    data = f.read()
    decoded = json.loads(data.decode(charset))
    return decoded

def save_currencies(currencies, filename):
    sorted_currencies = sorted(currencies.items())
    with open(filename, 'w') as my_csv:
        csv_writer = csv.writer(my_csv, delimiter=',')
        csv_writer.wrtiterows(sorted_currencies)

save_currencies(fetch_currencies(), 'currencies.csv')

相关问题 更多 >

    热门问题