在Python Dask中保存为文本时,对象{…}既不是字节对象,也没有编码方法
我有一个很大的在Python Dask中保存为文本时,对象{…}既不是字节对象,也没有编码方法,python,dask,Python,Dask,我有一个很大的json文件,我用Python中的Dask读取它。然后我做了一些调整和过滤,并再次尝试将其保存到json def flatten(record): return { 'id': record['id'], 'title': record['title'], 'year': record['year'], ... } if __name__ == '__main__': dd = db.re
json
文件,我用Python中的Dask读取它。然后我做了一些调整和过滤,并再次尝试将其保存到json
def flatten(record):
return {
'id': record['id'],
'title': record['title'],
'year': record['year'],
...
}
if __name__ == '__main__':
dd = db.read_text('data.json',).map(json.loads)
dd.filter(lambda x: 'title' in x.keys()) \
.map(flatten) \
.to_textfiles('*.json', encoding='utf-8')
首先,我过滤掉所有没有字段title
的对象。然后,使用map
,删除所有不需要的字段,并创建一些新字段。最后,我再次调用to_textfiles
将其保存到json
def flatten(record):
return {
'id': record['id'],
'title': record['title'],
'year': record['year'],
...
}
if __name__ == '__main__':
dd = db.read_text('data.json',).map(json.loads)
dd.filter(lambda x: 'title' in x.keys()) \
.map(flatten) \
.to_textfiles('*.json', encoding='utf-8')
然而,我得到了错误
TypeError: Object {...here goes the first object as I have created it...} is neither a bytes object nor has an encode method
对象是有效的,并在在线验证器中进行测试。需要一个包,其中的元素是文本。正如在操作之前使用json.loads
映射一样,在编写以下代码之前,您需要使用json.dumps
映射:
.map(json.dumps).to_textfiles('*.json', encoding='utf-8')