2010-10-13 7 views
0

J'ai besoin de traiter des fichiers texte pour extraire des informations pertinentes pour une saisie ultérieure dans R pour une analyse statistique. Le contenu du fichier texte ressemble généralement à l'extrait d'exemple ci-dessous. Le conseil peut-il faire des recommandations sur le langage logiciel/de programmation que je devrais utiliser à cette fin? Les exigences essentielles du logiciel sont:Recommandations pour les logiciels de traitement de texte

  • facilité/clarté de la syntaxe de programmation pour extraire les informations pertinentes de chaque ligne (note: toutes les lignes contiennent des informations pertinentes)
  • libre/open source
  • peut fonctionner sur les systèmes Linux et Windows
  • capacité de boucle à travers de nombreux, de nombreux fichiers texte séparés contenus dans un dossier/répertoire, mais la sortie à un seul simple (csv/texte) fichier

EXEMPLE

 
Full Tilt Poker Game #19911608402: Table Buggy - $0.01/$0.02 - No Limit Hold'em - 4:05:58 ET - 2010/04/08 
Seat 2: BAD BeAts02 ($1.74) 
Seat 3: VIVIVIVIV ($1.20) 
Seat 4: pipelis ($2.87), is sitting out 
Seat 5: trichinosis ($2.54) 
Seat 6: Syrenski ($2) 
Seat 9: evil-bunny1 ($1.20) 
BAD BeAts02 posts the small blind of $0.01 
VIVIVIVIV posts the big blind of $0.02 
handrici sits down 
pipelis stands up 
Syrenski posts $0.02 
The button is in seat #9 
*** HOLE CARDS *** 
Dealt to Syrenski [6d 3s] 
handrici adds $2 
trichinosis calls $0.02 
Syrenski checks 
pkmyers sits down 
evil-bunny1 folds 
BAD BeAts02 raises to $0.08 
VIVIVIVIV folds 
VIVIVIVIV adds $0.02 
pkmyers adds $1.34 
trichinosis calls $0.06 
Syrenski folds 
*** FLOP *** [Js 5s 8s] 
pipelis sits down 
BAD BeAts02 has 15 seconds left to act 
BAD BeAts02 bets $0.18 
AntHraX85 sits down 
pipelis stands up 
trichinosis folds 
Uncalled bet of $0.18 returned to BAD BeAts02 
BAD BeAts02 mucks 
AntHraX85 adds $2 
BAD BeAts02 wins the pot ($0.19) 
*** SUMMARY *** 
Total pot $0.20 | Rake $0.01 
Board: [Js 5s 8s] 
Seat 2: BAD BeAts02 (small blind) collected ($0.19), mucked 
Seat 3: VIVIVIVIV (big blind) folded before the Flop 
Seat 4: pipelis is sitting out 
Seat 5: trichinosis folded on the Flop 
Seat 6: Syrenski folded before the Flop 
Seat 9: evil-bunny1 (button) didn't bet (folded) 
+0

Quelles informations seraient pertinentes pour vous? L'utilisateur décidera-t-il de ce qui est pertinent? Y a-t-il un motif? – pablosaraiva

+0

L'information pertinente serait tout ce qui concerne un joueur nommé spécifique, c'est-à-dire Syrenski, et des informations sur la structure de la main. – babelproofreader

+0

'handrici s'assied' ... dans quel numéro de siège? – Kaz

Répondre

0

Coincidentially, je l'ai bricolé avec analyse syntaxique des fichiers d'historique de la main ainsi :) Je pense que les meilleurs candidats sont python et perl. Ils sont à la fois multi-plateforme et open-source. D'un point de vue conceptuel, la conception du programme est simple: elle implique simplement l'itération par rapport à l'entrée par ligne et l'application de diverses expressions régulières afin d'extraire des informations. Et vous pourriez le faire dans presque n'importe quel langage de programmation. (Vous pourriez même être en mesure de le faire en R pur, qui sait?) Cependant, je voterais sur perl, car il est réputé pour être un langage superbe spécialement pour le traitement de fichiers en texte brut.

0

Cette question a été ouverte pendant un certain temps, mais je vais poster un extrait de code ici de toute façon. grep fonctionne sur Linux mais pas sur Windows. Perl fonctionnera sur les deux plates-formes. Linux a Perl pré-installé; sur Windows, vous devrez installer Perl vous-même.

En supposant que chaque ligne que vous souhaitez extraire contiendra le nom du joueur (Utilisons Syrenski), vous pouvez effectuer les opérations suivantes:

perl -n -e'print if m{Syrenski}' directory/* >output.txt 

-n boucle sur toutes les lignes dans l'entrée, mais ne les imprime pas

impression si m {} Syrenski dit imprimer la ligne si elle contient la chaîne 'Syrenski'

répertoire/* dit processus tous les fichiers sous le répertoire

> sortie.txt dit imprimer la sortie vers le fichier sortie.txt

Questions connexes