文本处理软件的建议

时间:2010-10-13 18:50:35

标签: text-processing

我需要处理文本文件以提取相关信息,以便以后输入R进行统计分析。文本文件内容通常类似于下面显示的示例提取。董事会是否可以就我应该为此目的使用的软件/编程语言提出任何建议?该软件的关键要求是:

  • 编程语法的简易性/清晰度,以从每一行中提取相关信息(注意:并非所有行都包含相关信息)
  • 免费/开源
  • 可以在Linux和Windows系统上运行
  • 能够遍历文件夹/目录中包含的许多单独的文本文件,但只输出到一个(csv / text)文件

实施例

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)

4 个答案:

答案 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