python - 为 csv 的每行创建一个 JSON

标签 python json python-3.x csv

我正在尝试弄清楚如何调整我的代码,以便它将 csv 的每一行写入自己的 json,然后将其发布(以及我想要尝试循环的方式,json 文件每次都被覆盖没有问题)。

我的代码根据需要生成结构化 json,并将所有内容格式化为正确的数据类型,但我一生都无法弄清楚如何逐行循环。我还有另一段代码可以实现第二个目标,但到目前为止,我将它们组合起来的所有尝试都失败了。

关于如何循环这段代码有什么建议吗?

output = []
with open('Test3.csv') as csv_file:
    for a in csv.DictReader(csv_file):
        output.append({
            'OrderType': a['OrderType'],
            'OrderStatus': a['OrderStatus'],
            'OrderDateTime': a['OrderDateTime'],
            'SettlementDate': a['SettlementDate'],
            'MarketId': int(a['MarketId']),
            'OrderRoute': a['OrderRoute'],
            'OrderEntityType': a['OrderEntityType'],
            'SecurityId': a['SecurityId'],
            'CurrencyISOCode': a['CurrencyISOCode'],
            'Price': float(a['Price']),
            'TotalCommission': float(a['TotalCommission']),
            'SettlementStatus': a['SettlementStatus'],
            'QuantitySettled': float(a['QuantitySettled']),
            'SecurityOrderAllocations': {
                'Reference': a['Account Number'],
                'InvestmentCollectiveId': a['Account Number'],
                'NominalAmount': float(a['QuantitySettled']),
                'InvestmentAmount': float(a['InvestmentAmount']),
                'OpenNominal': float(a['QuantitySettled']),
                'SettlementCurrencyISOCode': 'USD',
                'SettlementAccountId': a['Account Number'],
                'OrderToSettlementExchangeRate': float('1'),
                'SettlementToPortfolioExchangeRate': float('1'),
                'OrderToPortfolioExchangeRate': float('1')
            }
        })

output_json = json.dumps(output)
with open ('Test.json', 'w') as f:
    f.write(output_json)

最佳答案

将您从 CSV 行创建的每个字典转换为 JSON,并将其写入文件(或将其 POST 到 URL,或您想要对其执行的任何操作)。

filenum = 1
with open('Test3.csv') as csv_file:
    for a in csv.DictReader(csv_file):
        json = json.dumps({
            'OrderType': a['OrderType'],
            'OrderStatus': a['OrderStatus'],
            'OrderDateTime': a['OrderDateTime'],
            'SettlementDate': a['SettlementDate'],
            'MarketId': int(a['MarketId']),
            'OrderRoute': a['OrderRoute'],
            'OrderEntityType': a['OrderEntityType'],
            'SecurityId': a['SecurityId'],
            'CurrencyISOCode': a['CurrencyISOCode'],
            'Price': float(a['Price']),
            'TotalCommission': float(a['TotalCommission']),
            'SettlementStatus': a['SettlementStatus'],
            'QuantitySettled': float(a['QuantitySettled']),
            'SecurityOrderAllocations': {
                'Reference': a['Account Number'],
                'InvestmentCollectiveId': a['Account Number'],
                'NominalAmount': float(a['QuantitySettled']),
                'InvestmentAmount': float(a['InvestmentAmount']),
                'OpenNominal': float(a['QuantitySettled']),
                'SettlementCurrencyISOCode': 'USD',
                'SettlementAccountId': a['Account Number'],
                'OrderToSettlementExchangeRate': float('1'),
                'SettlementToPortfolioExchangeRate': float('1'),
                'OrderToPortfolioExchangeRate': float('1')
            }
        })
        with open('Test' + str(filenum) + '.csv', 'w') as f:
            f.write(json)
    filenum += 1

关于python - 为 csv 的每行创建一个 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46775963/

相关文章:

python - 通过 Excel 在 CSV 中保留前导 "+"

Python:如何访问此类列表中的数据?

java - toJSONString() 未为 JSONObject 类型定义

java.lang.IllegalStateException : Expected BEGIN_OBJECT but was STRING at line 1 column 62 错误

python-3.x - 根据条件更改行值的Python for循环工作正常,但不会更改pandas数据帧上的值?

python - 提取span标签内的信息

python - python 中的事件处理程序,类似于 C# 吗?监听串行消息

python - 矩阵的自定义回溯功能不起作用

python - 从 mongoDB 文档中获取 JSON

python-3.x - 倭黑猩猩 : How to use multiple data sources?