我需要处理文本文件以提取相关信息,以便以后输入R进行统计分析。文本文件内容通常类似于下面显示的示例提取。董事会是否可以就我应该为此目的使用的软件/编程语言提出任何建议?该软件的关键要求是:
实施例
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 :(得分:0)
巧合的是,我还修改了手历史文件:) 我认为最好的候选人是python和perl。它们既是跨平台的,也是开源的。 从概念上讲,程序设计很简单:它只涉及对逐行输入的迭代和各种正则表达式的应用以提取信息。 你几乎可以用任何编程语言来做到这一点。 (你甚至可以在纯R中做到这一点,谁知道?) 但是,我会对perl进行投票,因为它是一种极好的语言而闻名,特别是对于处理纯文本文件。
答案 1 :(得分:0)
看看'grep'(试试维基百科)。
它可以在PHP中使用: http://www.php.net/manual/en/function.preg-grep.php
桌面文本编辑器也会执行grep。其中一些是免费的 - 例如TextWrangler(Mac)
答案 2 :(得分:0)
我专门为这类事做了一种语言,至少在最初:http://www.nongnu.org/txr
答案 3 :(得分:0)
这个问题已经开放了一段时间,但无论如何我都会在这里发布一个代码片段。 grep 可以在Linux上运行,但不能在Windows上运行。 Perl 可以在两个平台上运行。 Linux预装了Perl;在Windows上你需要自己安装Perl。
假设您要提取的每一行都包含播放器的名称(让我们使用Syrenski),您可以执行以下操作:
perl -n -e'print if m{Syrenski}' directory/* >output.txt
-n 循环输入中的所有行,但不打印它们
打印,如果m {Syrenski} 表示打印该行,如果它包含字符串'Syrenski'
目录/ * 表示处理目录
下的所有文件> output.txt 表示将输出打印到文件output.txt