问题描述
我正在参加这场Kaggle比赛。 kaggle上的Jupyter笔记本仅支持R和Python,我想在本地使用F#。问题在于数据集是.json文件,而F#Json Type Provider和Newtonsoft库在尝试解析文件时均失败。
以下是代码在F#中失败的示例:
open FSharp.Data
type Context = JsonProvider<"train.json">
let context = Context.
和
open System
open System.IO
open Newtonsoft.Json
open Newtonsoft.Json.Linq
let object = JObject.Parse(File.ReadAllText("train.json"));
object
train = pd.read_json('../input/stanford-covid-vaccine/train.json',lines=True)
test = pd.read_json('../input/stanford-covid-vaccine/test.json',lines=True)
在笔记本中,作者说如果没有“ lines = True”参数,则read_json方法将失败,并出现this尾随错误。
我的问题:假设tis是相同的错误,是否有办法将相同类型的“ lines = true”应用于.NET库以解析json?
解决方法
我看过一些数据集,其格式是每行一条有效的JSON记录:
{"event":"nothing 1"}
{"event":"nothing 2"}
{"event":"nothing 3"}
这总体上不是有效的JSON。我认为您可以逐行解析它,也可以将其转换为有效的JSON。对于逐行解析(可能更有效,因为您可以以流方式进行此解析),我将使用:
open FSharp.Data
type Log = JsonProvider<"""{"event":"nothing 1"}""">
for line in File.ReadAllLines("some.json") do
let l = Log.Parse(line)
printfn "%s" l.Event