繁体   English   中英

如何从csv文件中的一行读取JSON字符串?

[英]How to read JSON string from a line in csv file?

我是MapReduce和MRjob的新手,我试图读取要在python中使用MRjob处理的csv文件。 但是它有大约5列带有JSON字符串(例如{})或JSON字符串数组(例如[{},{}])的列,其中有些是嵌套的。

到目前为止,我的映射器如下所示:

from mrjob.job import MRJob
import csv
from io import StringIO

class MRWordCount(MRJob):
    def mapper(self, _, line):
        l = StringIO(line)
        reader = csv.reader(l) # returns a generator.

        for cols in reader:
            columns = cols

        yield None, columns

我得到了错误-

_csv。错误:字段大于字段限制(131072)

但这似乎是发生了,因为我的代码也将JSON字符串也分成了单独的列(由于内部的逗号)。

我如何做到这一点,以便不拆分JSON字符串? 也许我忽略了什么?

另外,是否还有其他方法可以使MRjob读取此文件,从而使此过程更简单或更简洁?

您的JSON字符串没有用引号引起来,因此该字段中的每个逗号都会使csv引擎将其视为新列。 这里看看您要寻找的是quotechar更改您的数据,以便json包含一个特殊字符(默认为" )并相应地调整您的csv阅读器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM