你知道怎么把它读成CSV吗?Python

2024-09-24 22:31:32 发布

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

我有一个CSV格式如下:

ID=123[DLE]KEY=test[DLE]KEY2=VAL123

其中[DLE]是"Data link escape" control character


你知道我该如何使用csv标准库吗?

是否需要编辑每一行以使其兼容?在

编辑:我的主要问题是“KEY=VALUE”格式

谢谢各位


Tags: csvkeytestid编辑data格式link
3条回答

您可以通过简单地重写分隔符来解析它(假设雪人是您的DLE):

import csv
testdata='ID=123☃KEY=test☃KEY2=VAL123\nID=456☃KEY=test2☃KEY2=val456'
testdataiter=testdata.splitlines()
reader = csv.reader(testdataiter, delimiter='☃')
for row in reader:
    print (','.join(row))

输出:

^{pr2}$

检查csv模块的帮助-任何方言参数都可以在reader构造函数中重写。在


要将KEY=VAL解析为dict,请更改为:

^{3}$

输出:

{'KEY2': 'VAL123', 'ID': '123', 'KEY': 'test'}
{'KEY2': 'val456', 'ID': '456', 'KEY': 'test2'}

在Python中,可以向csv模块传递一个格式字符(csv module docs):

>>> import csv
>>> spamReader = csv.reader(open('eggs.csv', 'rb'), delimiter=' ', quotechar='|')

你的数据实际上不是CSV格式的,所以我放弃使用它。我要做的是编写一个生成器,对每一行进行.split('\x10'),然后对每一段进行{},然后将整个内容作为dict生成

def dgen(fin):
  for line in fin:
    yield dict(((k, v) for chunk in line.rstrip('\r\n').split('\x10')
        for (k, v) in chunk.split('=', 1)))

相关问题 更多 >