python - 将 CSV 数据从文件转换为 JSON
问题描述
我有一个 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。
解决方案
在 Python 中,每个文件都有一个标记,用于跟踪您在文件中的位置。一旦你调用read()
,你已经阅读了整个文件,并且所有未来的 read 或 readline 调用都不会返回任何内容。
因此,只需删除涉及first_line
.
推荐阅读
- r - 获取类字符/整数或我定义的任何类型的列索引?
- sql - 根据条件 oracle 将列设置为不为空
- javascript - 渐变跟随鼠标但没有赶上
- c# - 在 .Net Core 中将 Nexmo 连接到 Websocket 失败(远程方关闭了 WebSocket)
- css - 在wordpress中将背景位置设置为顶部
- javascript - PUT 批量请求正文
- java - 如何在 macos high sierra 上使用 Apache Netbeans 10 二进制文件?
- keras - Keras,多层自动编码器,不同数量的隐藏层具有相同的精度
- operating-system - youtube 会阻止多任务处理吗?
- php - Wordpress - 使用下载管理器获取类别