python - 如何将多个表格从 Excel 转换为 JSON
问题描述
我在 Excel 中有 2 个表。
第一个包含公司信息:
标题 | 会员_否 | Auth_Capital | 电子邮件 |
---|---|---|---|
科威特能源公司 KSCC | 100018 | 127000000 | 127000000 |
塞勒姆国际广告公司 | 100021 | 10000 | |
电源触摸发电机。贸易。&继续。一氧化碳 | 100026 | 500000 |
第二个表包含用户和关联公司的信息:
姓名 | 角色 | 国籍 | 会员_否 |
---|---|---|---|
منصور احمد محمد بوخمسين | 董事会主席 | 科威特 | 100018 |
محمد عادل التميمي | 副主席兼首席执行官 | 加拿大 | 100018 |
萨勒姆·M·阿杰米 | Doc的授权合作伙伴。 | 科威特 | 100021 |
ريم محمد سالم الحريص | 伙伴 | 科威特 | 100026 |
喜欢 | 特别授权书 | 科威特 | 100026 |
胡歌 | 特别授权书 | 科威特 | 100026 |
但是,我想将其转换为 JSON。
这是我想要的 JSON 文件的结果:
[{"information": {"title": " KUWAIT ENERGY CO. KSCC", "Member_No": " 100018", "Auth_Capital":" 127000000", "Email": " mansour.aboukhamseen@koc.com.kw"}, "users": [{"name": "منصور احمد محمد بوخمسين", "role": " Chairman of the board of Directors", "nationality": " KUWAIT"},{"name": "محمد عادل التميمي", "role": " Vice Chairman and Cheif Executive", "nationality": " CANADA"}]},
{"information":{"title": " SALEM INTERNATIONAL ADVERTISING CO.", "Member_No": " 100021", "Auth_Capital": " 10000", "Email": null}, "users": [{"name": "SALEM M. AL-AJMI", "role": " Authorized partner with Doc.", "nationality": " KUWAIT"}]},
{"information":{"title": " POWER TOUCH GEN. TRAD. & CONT. CO.", "Member_No": " 100026", "Auth_Capital": " 500000", "Email": null}, "users": [{"name": "ريم محمد سالم الحريص", "role": " Partner", "nationality": " KUWAIT"},{"name": "محمد 0 0", "role": " Special Power of Attorney", "nationality": " KUWAIT"}, {"name": "سالم 0 0", "role": " Special Power of Attorney", "nationality": " KUWAIT"}]}]
我编写了以下代码,可以将一个 Excel 表格转换为 JSON 文件。
import excel2json
excel2json.convert_from_file('Conpanies.xlsx')
解决方案
你可以使用熊猫。
首先导入您的excel文件。to_dict
您可以使用和 参数轻松地将它们转换为字典orient="records"
。
最后构建您的 dict 列表以从中生成 json:
import pandas as pd
import json
df_c = pd.read_excel("companies.xlsx")
df_u = pd.read_excel("users.xlsx")
data = []
comp_list = df_c.to_dict(orient="records")
for comp in comp_list:
users = df_u[df_u["Member_No"]==comp["Member_No"]].to_dict(orient="records")
data.append({"information": comp, "users":users})
print(json.dumps(data, indent=4, ensure_ascii=False))
ensure_ascii=False
使 json 中的阿拉伯字符可读(打开 json 时注意编码):
[
{
"information": {
"title": "KUWAIT ENERGY CO. KSCC",
"Member_No": 100018,
"Auth_Capital": 127000000,
"Email": "foo@bar.com"
},
"users": [
{
"name": "منصور احمد محمد بوخمسين",
"role": "Chairman of the board of Directors",
"nationality": "KUWAIT",
"Member_No": 100018
},
{
"name": "محمد عادل التميمي",
"role": "Vice Chairman and Cheif Executive",
"nationality": "CANADA",
"Member_No": 100018
}
]
},
{
"information": {
"title": "SALEM INTERNATIONAL ADVERTISING CO.",
"Member_No": 100021,
"Auth_Capital": 10000,
"Email": NaN
},
"users": [
{
"name": "SALEM M. AL-AJMI",
"role": "Authorized partner with Doc.",
"nationality": "KUWAIT",
"Member_No": 100021
}
]
},
{
"information": {
"title": "POWER TOUCH GEN. TRAD. & CONT. CO.",
"Member_No": 100026,
"Auth_Capital": 500000,
"Email": NaN
},
"users": [
{
"name": "ريم محمد سالم الحريص",
"role": "Partner",
"nationality": "KUWAIT",
"Member_No": 100026
},
{
"name": "محمد",
"role": "Special Power of Attorney",
"nationality": "KUWAIT",
"Member_No": 100026
},
{
"name": "سالم",
"role": "Special Power of Attorney",
"nationality": "KUWAIT",
"Member_No": 100026
}
]
}
]
推荐阅读
- list - 为什么 shuffle 函数需要一个 Int 参数?
- angular - 使用 Angular2 连接到远程服务器
- ruby-on-rails - Rails:chromedriver-helper 什么时候执行失败?
- types - 字符串和原子之间的莫扎特-奥兹区别
- javascript - 如何在javascript中解码nginx产生的十六进制编码
- php - 我如何在 php 中获取键的特定值
- parsing - UWP - 语音识别 - 无法引用外部语法文件
- javascript - 为 Fetch 请求评估 javascript
- kubernetes - Kubernetes 多容器 Pod
- java - 检查当前使用的 ArrayAdapter Spinner