将CSV数据从文件转换为JSON

时间:2019-06-22 00:49:16

标签: python json csv

我有一个csv文件,其中包含以','分隔的csv数据。我正在尝试将其转换为json格式。为此,我想先提取标题。但是,我无法区分标题和下一行。

以下是csv文件中的数据:

Start Date ,Start Time,End Date,End Time,Event Title 9/5/2011,3:00:00 PM,9/5/2011,,Social Studies Dept. Meeting 9/5/2011,6:00:00 PM,9/5/2011,8:00:00 PM,Curriculum Meeting

我也尝试过使用csvreader,但遇到同样的问题。 基本上Event Title和下一行的日期不被区分。

        with open(file_path, 'r') as f:
            first_line = re.sub(r'\s+', '', f.read())
                arr = []
                headers = []
                for header in f.readline().split(','):
                    headers.append(header)
                for line in f.readlines():
                    lineItems = {}
                    for i,item in enumerate(line.split(',')):
                        lineItems[headers[i]] = item
                    arr.append(lineItems)
                print(arr)
                print(headers)
                jsonText = json.dumps(arr)
                print(jsonText)

所有三个打印语句在下面给出空结果。

[]
['']
[]

我希望jsonText是键值对的json。

2 个答案:

答案 0 :(得分:1)

在Python中,每个文件都有一个标记,用于跟踪您在文件中的位置。调用read()后,您已经阅读了整个文件,以后所有的read或readline调用都将不返回任何内容。

因此,只需删除涉及first_line的行即可。

答案 1 :(得分:1)

使用csv.DictReader获取字典列表(每一行都是字典),然后对其进行序列化。

import json
import csv
with open(csvfilepath) as f:
    json.dump(list(csv.DictReader(f)), jsonfilepath))