2010-03-19 8 views
0

J'essaie d'analyser un fichier généré par LGA Tracon qui répertorie les données de position pour les avions sur une période donnée. Les données d'intérêt commencent par TRACKING DATA et se terminent par SST et il y a des milliers d'entrées par fichier. Le système générant le fichier, Common ARTS, est très rigide dans sa mise en forme et nous pouvons nous attendre à ce que l'espacement des colonnes soit cohérent. Toute aide serait grandement appréciée.Comment analyser les données de colonne?

Merci,

Voici une image pour conserver la mise en forme exacte alt text http://www.schedulebook.com/Temp/N90.gif

Voici un fichier texte réduit.

link text

+0

Voulez-vous que la position? –

+0

Le format n'est pas idéal - êtes-vous sûr que le système ne peut pas sortir sous une forme plus facilement lisible par machine? –

+0

Désolé, les systèmes sont vieux et pas très flexibles. C'est la seule sortie qu'ils peuvent faire. – user38349

Répondre

1

Si vous choisissez d'ignorer la suggestion de jball de FileHelpers (qui ressemble beaucoup), je vous suggère de lire la ligne de fichiers en ligne jusqu'à ce que vous identifiez une ligne commençant par TRACKING DATA

tirer ensuite les 11 lignes suivantes dans un tableau et le démarrage manipuler avec .instr()

Vous peut trouver cette solution est plus rapide que d'utiliser une bibliothèque supplémentaire que votre code construit manuellement sera adapté directement au problème en main. N'ayant pas utilisé FileHelpers je ne connais pas sa surcharge de vitesse.

J'ai écrit beaucoup de l'analyse du fichier avant dans le passé (plaisamment aussi avec des fichiers texte à base de voyage) et l'a trouvé assez rapide/efficace

2

Il y a plusieurs façons de résoudre ce problème, mais les bibliothèques libres comme FileHelpers ont résolu ce. Ils ont même déjà un Quick Start for Fixed Length files avec le code VB. Si vous ne parvenez pas à utiliser une bibliothèque externe, vous pouvez commencer avec le .NET intégré TextFieldParser. Vous aurez besoin de beaucoup plus de travail avec cela qu'avec FileHelpers, mais il gère très bien la partie à largeur fixe.

+0

+1 très bon lien! J'ai toujours codé en dur comme ça. – CResults

+0

Cependant, pas convaincu par TextFieldParser que le format du fichier (y compris la section qui l'intéresse) change tout au long et ne peut pas être classé comme un fichier à largeur fixe standard. – CResults

+0

Certes, je pense que vous pourriez le faire fonctionner par des sections sélectivement si. Votre suggestion '.instr()' semble être un bon moyen d'aller si une bibliothèque extérieure est sortie. – jball

Questions connexes