Metodi di Parsing, CSV Files

Il parsing, analisi sintattica o parsificazione, in informatica è un processo che analizza un flusso continuo di dati in input (letti per esempio da un file o una tastiera) in modo da determinare la sua struttura grazie ad una data grammatica formale. 

Il parser è un programma che esegue questo compito, cioè determina se e come un input può derivare dal simbolo iniziale con le regole della grammatica formale.
Esistono due principali metodi di parsing:
- Metodo top-down, un parser può partire con il simbolo iniziale e cercare di trasformarlo nell'input. Intuitivamente, il parser parte dal più grande elemento e lo divide in parti sempre più piccole;
- Metodo bottom-up, un parser può partire con l'input e cercare di riscriverlo sino al simbolo iniziale. Intuitivamente, il parser cerca di trovare il più elementare simbolo, quindi elabora gli elementi che lo contengono, e così via.

Nello specifico, ci soffermiamo sulla lettura di un file .csv (comma-separeted values) e la sua trasposizione in una RichTextBox in VB.NET e C#, andando a trattare di seguito un esempio illustrativo in VB.NET e nell'articolo successivo i diversi metodi utilizzabili nei due linguaggi di programmazione.

Dopo aver creato il Form e aver inserito un Button (Button1) e una RichTextBox (RichTextBox1):

Import System.IO

Public Class Form 1
    

Vado a definire cosa controlla il Button1
Sub Button1_Click(Sender As Object, e As EventArgs) Handles Button1.Click     

Acquisizione del nome del file
Dim o As New OpenFileDialog
o.ShowDialog()
Dim NomeFile As String = o.FileName
Acquisizione alternativa del nome del file
Dim NomeFile As String = " percorso file "

Definizione del lettore: utilizzo la funzione StreamReader
Dim s As New StreamReader(NomeFile)

Definisco un Loop fino alla lettura dell'ultima riga
Do
Dim RigaDelFile = s.ReadLine()
Non considero le righe di commento o le righe vuote
If RigaDelFile.Contains("#") Then Continue Do
If RigaDelFile.Contains(" ") Then Continue Do
Dim Pezzi As String() = RigaDelFile.Split(" ".ToCharArray, StringSplitOptions.RemoveEmptyEntries)
Trasferisco il tutto alla RichTextBox1
Me.RichTextBox1.AppendText(RigaDelFile & Environment.NewLine)
Loop Untile s.EndOfStream

End Sub

End Class


Commenti

Post popolari in questo blog

Resampling dei dati

Indici di performance di una strategia di trading. Calmar Ratio, Sharpe Ratio, Sortino Ratio

Metodi di calcolo del PNL