[英]Convert CSV file to JSON with python
我正在尝试将我的 CSV 电子邮件列表转换为 JSON 格式,以便通过 API 批量发送电子邮件。 到目前为止,这是我的代码,但输出有问题。 我的 VS 代码编辑器上没有任何输出。
import csv
import json
def make_json(csvFilePath, jsonFilePath):
data = {}
with open(csvFilePath, encoding='utf-8') as csvf:
csvReader = csv.DictReader(csvf)
for rows in csvReader:
key = rows['No']
data[key] = rows
with open(jsonFilePath, 'w', encoding='utf-8') as jsonf:
jsonf.write(json.dumps(data, indent=4))
csvFilePath = r'/data/csv-leads.csv'
jsonFilePath = r'Names.json'
make_json(csvFilePath, jsonFilePath)
这是我想要的 JSON 格式
{
"EmailAddress": "hello@youngstowncoffeeseattle.com",
"Name": "Youngstown Coffee",
"ConsentToTrack": "Yes"
},
这是我的 CSV 列表
No,EmailAddress,ConsentToTrack
Zylberschtein's Delicatessen & Bakery,catering@zylberschtein.com,Yes
Youngstown Coffee,hello@youngstowncoffeeseattle.com,Yes
看起来您可以使用csv.DictReader
来csv.DictReader
此操作。
如果我有data.csv
:
Name,EmailAddress,ConsentToTrack
Zylberschtein's Delicatessen,catering@zylberschtein.com,yes
Youngstown Coffee,hello@youngstowncoffeeseattle.com,yes
我可以像这样将其转换为 JSON:
>>> import csv
>>> import json
>>> fd = open('data.csv')
>>> reader = csv.DictReader(fd)
>>> print(json.dumps(list(reader), indent=2))
[
{
"Name": "Zylberschtein's Delicatessen",
"EmailAddress": "catering@zylberschtein.com",
"ConsentToTrack": "yes"
},
{
"Name": "Youngstown Coffee",
"EmailAddress": "hello@youngstowncoffeeseattle.com",
"ConsentToTrack": "yes"
}
]
在这里,我假设可以逐字使用 CSV 中的标题。 如果您需要修改键名(例如将“No”转换为“Name”),我会用一个例子来更新它。
如果您需要重命名列,它可能看起来更像这样:
import csv
import json
with open('data.csv') as fd:
reader = csv.DictReader(fd)
data = []
for row in reader:
row['Name'] = row.pop('No')
data.append(row)
print(json.dumps(data, indent=2))
鉴于此输入:
No,EmailAddress,ConsentToTrack
Zylberschtein's Delicatessen,catering@zylberschtein.com,yes
Youngstown Coffee,hello@youngstowncoffeeseattle.com,yes
这将输出:
[
{
"EmailAddress": "catering@zylberschtein.com",
"ConsentToTrack": "yes",
"Name": "Zylberschtein's Delicatessen"
},
{
"EmailAddress": "hello@youngstowncoffeeseattle.com",
"ConsentToTrack": "yes",
"Name": "Youngstown Coffee"
}
]
并在我的编辑器上
print(json.dumps(list(reader), indent=2))
是简单的print(json.dumps(list(reader), indent=2))
吗?
我对你的编辑器不太熟悉; print
是您在 Python 中生成控制台输出的方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.