2017-02-28 8 views
3

나는 초보자이고 나는 그의 마지막 줄 나는 그들이이 데이터에 의해 제작되었다 "같은입니다 때문에 무시하고 싶은 CSV 파일을 FSharp.Data 라이브러리를 http://fsharp.github.io/FSharp.Data/library/CsvProvider.htmlF # CSV 유형 공급자 : 일부 행을 무시하는 방법?

let rawfile = CsvFile.Load("mydata.csv") 
for row in rawfile.Rows do 
     let d = System.DateTime.Parse (row.GetColumn("Date")) 
     let p = float (row.GetColumn("Close Price")) 
     printfn "%A %A" d p 
     price_table.[BTC].Add (d,p) 

를 사용하기 시작 .. .. "

덧붙여 말하자면, 내가 그 라인을 지우더라도 파일을 다시 열 때, 그 셀이 다시 열릴 때 ... 끈적 거리는 것들이 다시 나타납니다 !!!

+2

나는 CsvProvider 마지막에 행을 건너 뛰고 생각하지 않습니다하지만 당신은 항상 필요한 데이터를 얻기 위해'rows.Take (x)가', 또는 필터를 적용 할 수 있습니다. 세 가지 덧글 : 1. 열을 올바르게 입력하려면 [Csv Type Provider] (http://fsharp.github.io/FSharp.Data/library/CsvProvider.html)를 사용해보십시오. 부적합한 행을 건너 뛸 수있는'IgnoreErrors = true' 옵션 3. F # 레코드를 꾸밀 경우 IgnoreFirst 및 IgnoreLast 옵션이있는 [FileHelpers] (http://www.filehelpers.net/)를 시도 할 수 있습니다 with []'Filehelpers가 잘 작동합니다. – s952163

+2

CSV 공급자 또는 파서 (사용중인)가 마지막 행을 건너 뛸 수 없습니다. 'ignoreErrors' 매개 변수를 설정하여 마지막 행을 무시하십시오. –

답변

0

TextReader 파생 매개 변수를 사용하는 CsvFile.Load에 과부하가 있습니다.

건너 뛸 줄 수를 알고있는 경우 파일에 StreamReader을 만들 수 있습니다. 줄을 건너 뛰려면 ReadLine을 사용하면됩니다. 그런 다음 당신은 단순히 당신이 원하는 것을 건너 뛰고, 당신의 행을 취소 할 수 있습니다, 메모리에 전체 SCV를로드하고와 확인을 경우

use reader = StreamReader("mydata.csv") 
reader.ReadLine() |> ignore 
reader.ReadLine() |> ignore 
let rawfile = CsvFile.Load(reader) 
+2

이것은 CsvFile에 이미'skipRows' 옵션이있는 첫번째 행만 건너 뜁니다. – s952163

+1

몇 줄의 줄이 남아 있는지 알 수 없으므로 전진 전용 텍스트 판독기는 바닥 글 줄을 건너 뛸 수 없습니다. –

+2

죄송합니다. 질문을 더 잘 읽어야합니다. 예, 미리 읽기를하고 빈 줄 앞에 끝을 표시하거나 모든 줄을 배열로 읽어 들이고 마지막 줄을 잘라내어 다시 StringReader 인스턴스의 한 문자열로 다시 넣는 사용자 지정 판독기가 필요합니다. – marklam

0

(선택적으로) 다시 반전.

예 :