在Python中将字典格式的txt文件转换为excel

时间:2019-06-14 06:33:23

标签: python pandas dataframe dictionary

对于txt文件result.txt,如下所示:

[
  {
    "image_id": "42041",
    "mean_score_prediction": 4.996936075389385
  },
  {
    "image_id": "42039",
    "mean_score_prediction": 4.647608995437622
  },
  {
    "image_id": "42044",
    "mean_score_prediction": 3.9866196922957897
  },
  {
    "image_id": "42042",
    "mean_score_prediction": 3.9691513180732727
  },
  {
    "image_id": "42040",
    "mean_score_prediction": 4.303698152303696
  }
]

我想将其转换为数据框df,然后另存为excel result.xlsx

print(df)
   image_id  mean_score_prediction
0     42041               4.996936
1     42039               4.647609
2     42044               3.986620
3     42042               3.969151
4     42040               4.303698

如何在Python中执行此操作?谢谢。

首先,我使用Python读取文件:

filename = 'result.txt'
with open(filename) as f:
    data = f.readlines()

print(data)

输出:

['[\n', '  {\n', '    "image_id": "42041",\n', '    "mean_score_prediction": 4.996936075389385\n', '  },\n', '  {\n', '    "image_id": "42039",\n', '    "mean_score_prediction": 4.647608995437622\n', '  },\n', '  {\n', '    "image_id": "42044",\n', '    "mean_score_prediction": 3.9866196922957897\n', '  },\n', '  {\n', '    "image_id": "42042",\n', '    "mean_score_prediction": 3.9691513180732727\n', '  },\n', '  {\n', '    "image_id": "42040",\n', '    "mean_score_prediction": 4.303698152303696\n', '  }\n', ']\n']

2 个答案:

答案 0 :(得分:3)

使用:

In [1]: import pandas as pd

In [2]: with open("result.txt", 'r') as f:
   ...:     data = f.read()
   ...:

In [3]: data
Out[3]: '[\n  {\n    "image_id": "42041",\n    "mean_score_prediction": 4.996936075389385\n  },\n  {\n    "image_id": "42039",\n    "mean_score_prediction": 4.647608995437622\n  },\n  {\n    "image_id": "42044",\n    "mean_score_prediction": 3.9866196922957897\n  },\n  {\n    "image_id": "42042",\n    "mean_score_prediction": 3.9691513180732727\n  },\n  {\n    "image_id": "42040",\n    "mean_score_prediction": 4.303698152303696\n  }\n]'

In [6]: df = pd.read_json(data)

In [7]: df
Out[7]:
   image_id  mean_score_prediction
0     42041               4.996936
1     42039               4.647609
2     42044               3.986620
3     42042               3.969151
4     42040               4.303698

答案 1 :(得分:2)

您的文本文件具有json格式,因此如果没有扩展名.json,也可以使用read_json

df = pd.read_json('result.txt')
print (df)
   image_id  mean_score_prediction
0     42041               4.996936
1     42039               4.647609
2     42044               3.986620
3     42042               3.969151
4     42040               4.303698

最后DataFrame.to_excel写给excel的邮件:

df.to_excel('result.xlsx', index=False)