[英]Convert CSV to JSON in desired format using python
我想从相应的输入中收集一些关于低于 output 的见解,我尝试了一些代码,但无法得到我想要的结果。 希望看到表格转换为理想的格式,因为我必须在后期使用巨大的 CSV。 任何输入都受到高度赞赏。
输入:
参考 | 微控制器 | 价值 | 货币 |
---|---|---|---|
abcd1234 | 5300 | 134.09 | 美元 |
abcd1235 | 5411 | 38.48 | 美元 |
使用的代码:
from csv import DictReader
from itertools import groupby
from pprint import pprint
import json
with open('Test_bulk_transactions_data.csv') as csvfile:
r = DictReader(csvfile, skipinitialspace=True)
data = [dict(d) for d in r]
group = []
uniquekeys = []
for k, g in groupby(data, lambda r: (r['reference'], r['mcc'])):
group.append({
"reference": k[0],
"mcc": k[1],
"amount": [{k:v for k, v in d.items() if k not in ['reference','mcc']} for d in list(g)]})
uniquekeys.append(k)
print(json.dumps(group, indent = 3) + '}')
当前 Output :
[
{
"reference": "abcd1234",
"mcc": "5300",
"amount": [
{
"value": "134.09",
"currency": "USD"
}
]
},
{
"reference": "abcd1235",
"mcc": "5411",
"amount": [
{
"value": "38.48",
"currency": "USD"
}
]
}
]}
所需 Output :
{
"cardTransactions": [
{
"reference": "abcd1234",
"mcc": "5300",
"amount": {
"value": 134.09,
"currency": "USD"
}
},
{
"reference": "abcd1235",
"mcc": "5411",
"amount": {
"value": 38.48,
"currency": "USD"
}
}
]
}
看起来您只需要将 append 的所有内容放入“cardTransactions”键,并且在创建时可以将值强制转换为浮点数。
"amount": [{k: float(v) for k, v in d.items() if k not in ['reference','mcc']} for d in list(g)]})
group = [] to group = defaultdict(list)
and group['cardTransactions'].append(... code as usual ...)
您想要的 output 将不允许在给定交易中使用多个金额/货币,因此您根本不需要使用 groupby。
该过程可以简明为:
data = { 'cardTransactions':
[{'amount':{'value':d.pop('value'), 'currency':d.pop('currency')}, **d}]
for d in r }
print(json.dumps(data, indent = 3) + '}')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.