我有一个格式为的表格
--------Header--------
Name Subject Hours
v1 v2 v3
v4 v5 v6
我希望 json 文件具有以下格式:
{
{
"Name": "v1",
"Subject": "v2",
"Hours": "v3"
},
{
"Name": "v4",
"Subject": "v5",
"Hours": v6
}
}
我尝试使用 pandas,但无法将其转换为我想要的格式。不幸的是,更改 .xlsl 文件的布局是不可能的。我对 Python 和 JavaScript 都持开放态度。
正如有人在评论中所说,这不是有效的 json。你可以将 json 设置为如下所示:
{ “1”:{ “名称”:“v1”, “主题”:“v2”, “时间”:“v3” }, “2”:{ “名称”:“v4”, “主题”:“v5”, “时间”:“v6” } }
使用:
`
import pandas as pd
data = {
'Name': ['v1', 'v4'],
'Subject': ['v2', 'v5'],
'Hours': ['v3', 'v6']
}
df = pd.DataFrame(data)
json_data = df.to_dict(orient='index')
print(json_data)
`
如果您想要将每行的列表作为 json 那么您可以这样做:
json_data = df.to_json(orient='records')
这会给你一个像这样的json:
[{"姓名":"v1","主题":"v2","时间":"v3"},{"姓名":"v4","主题":"v5","时间":" v6"}]
我之前使用 xlsx 包在 NodeJS 中执行此操作。对我来说效果很好。尽管我使用的版本在保存新文件时存在一些格式问题,但如果您所需要做的就是阅读它们,它应该可以解决问题。
你不需要熊猫来处理如此琐碎的事情。
假设您的 xlsl 文件只是平面文本(如OP所示)并且您的输出需要是字典列表,那么:
import json
INFILE = "foo.xlsl"
OUTFILE = "foo.json"
with open(INFILE) as indata:
next(indata) # skip header
columns = next(indata).split()
result = [dict(zip(columns, row.split())) for row in indata]
with open(OUTFILE, "w") as outdata:
json.dump(result, outdata, indent=2)