提问者:小点点

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


我是MapReduce和MRjob的新手,我试图读取一个csv文件,我想在python中使用MRjob进行处理。但是它有大约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读取此文件,使此过程更简单或更干净?


共1个答案

匿名用户

您的JSON字符串没有被引号字符包围,因此该字段中的每个逗号都使csv引擎认为它是一个新列。看看这里,您正在寻找的是quetechar更改您的数据,以便您的json被一个特殊字符包围(默认为")并相应地调整您的csv阅读器