读取文件并转换为JSON

2024-04-25 10:19:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件,其中包含逗号分隔的数据,我希望最终输出是json数据。我在下面尝试过,但想知道有没有更好的方法来实现这一点

data.txt

1,002, name, address
2,003, name_1, address_2
3,004, name_2, address_3

我希望最终输出如下

{
"Id": "1",
"identifier": "002",
"mye": "name",
"add": "address"
}
{
"Id": "2",
"identifier": "003",
"mye": "name_2",
"add": "address_2"
}
and so on...

下面是我正在尝试的代码

list = []

with open('data.txt') as reader:
     for line in reader:
         list.append(line.split(','))
          
print(list)

上面只是返回列表,但我需要转换上面定义的json键值对


Tags: 文件数据nametxtaddidjsondata
3条回答

您想要的结果实际上不是JSON。它只是一系列的dict结构。我想你想要的是一份字典清单。试试这个:

fields = ["Id", "identifier", "mye", "add"]
my_json = []

with open('data.txt') as reader:
     for line in reader:
         vals = line.rstrip().split(',')
         my_json.append({fields[vals.index(val)]: val for val in vals})
print(my_json)

像这样的方法应该会奏效:

import json

dataList = []

with open('data.txt') as reader:
    # split lines in a way that strips unnecessary whitespace and newlines
    for line in reader.read().replace(' ', '').split('\n'):
        lineData = line.split(',')
        dataList.append({
            "Id":           lineData[0],
            "identifier":   lineData[1],
            "mye":          lineData[2],
            "add":          lineData[3]
        })
out_json = json.dumps(dataList)
print(out_json)

请注意,您可以更改此行:

out_json = json.dumps(dataList)

out_json = json.dumps(dataList, indent=4)

并更改缩进值以格式化json输出

如果您想:

open("out.json", "w+").write(out_json)

扩展到一个建议,但是您可以考虑^ {CD1>}而不是列表理解

import json
my_json = []
dict_header=["Id","identifier","mye","add"]
with open('data.txt') as fh:
    for line in fh:
        my_json.append(dict ( zip ( dict_header, line.split('\n')[0].split(',')) ))

out_file = open("test1.json", "w")
json.dump(my_json, out_file, indent = 4, sort_keys = False)
out_file.close()

当然,假设您将从excel保存到excel中的文本(选项卡已删除)

1   2   name    address
2   3   name_1  address_2
3   4   name_2  address_3

相关问题 更多 >