【问题标题】:parsing a text file in javascript? Or something better?用javascript解析文本文件?或者更好的东西?
【发布时间】:2011-06-13 20:41:36
【问题描述】:

我想知道如何在 Javascript 中解析文本文件并为文本文件中的每个项目创建计数。例如,一个文本文件包含:

苹果
橙色
香蕉
苹果
苹果
桃子

我想收集的输出是这样的:

苹果 3
橙色 1
香蕉 1
桃子 1

Javascript 可能不是最好的,因为这实际上是数百万行这样的。我可以用 PHP 之类的其他东西来完成它,并将结果也存储在 MySQL 中。我想在将项目添加到文件时运行此例程,并在每次运行后对结果进行快照以进行历史比较。

最好的方法是什么?

【问题讨论】:

  • JavaScript 不是最好的解决方案,除非你使用 node.js 运行它

标签: javascript parsing text


【解决方案1】:

这听起来像是为数据库工作。您可以以毫秒为单位计算数据库表中的项目,而使用编译代码解析文本文件需要几秒钟,而使用客户端 Javascript 则需要几分钟。

对项目进行分组和计数的数据库查询非常简单:

select Fruit, count(*)
from FruitTable
group by Fruit

编辑:

我在 SQL Server 中创建了一个有 800 万条记录的测试表,上面的查询运行时间大约为 3 秒。

【讨论】:

  • +1 重新阅读帖子后,我认为这是一个很好的答案:“将结果也存储在 MySQL 中..在添加项目时运行此例程..每次运行后对结果进行快照”
【解决方案2】:

这是 PHP 的

$string = file_get_contents ("textfile.txt");

$string_array = explode("\n",$string); foreach($string_array as $value) {
        if(isset($str_count[$value]))
                $str_count[$value]++;
        else
                $str_count[$value]=1; } foreach($str_count as $key => $value)
        echo $key.": ".$value."<br>";

文本文件.txt:

apple
orange
banana
apple
apple
peach

输出:

apple: 3
orange: 1
banana: 1
peach: 1

【讨论】:

    【解决方案3】:

    使用perl,一个例子:

    #!/usr/bin/perl -w 使用严格; 我的 $file = 班次; 我的 %fruits = (); 打开(我的 $handle,“)){ 切碎$水果; $水果{$水果}++; } foreach 我的 $key(排序键 %fruits){ 打印 "$key: ", $fruits{$key}, "\n"; }

    然后用perl fruits.pl FILENAME_TO_FRUITS_FILE运行它

    最终,上述方法是最简单的方法,但如果您确实有 数百万 个条目,则确实应该将其移至数据库。任何简单的 PHP/MySQL 教程都会有所帮助。

    【讨论】:

    • 我根本没有考虑过 Perl,感谢您让我将其视为解决方案
    • 如果您正在处理文本操作,perl 是一门很棒的语言。这是您应该随身携带的工具。
    • 你有一个好的 Perl 教程,这样我就可以恢复速度了吗?我忘了它对于这样的东西有多强大!
    • 我可以轻松地将perl的结果输出到它自己的文本文件中吗?
    • 哇 Perl 有一个 MySQL 模块。这个设置可能真的很棒,因为我有很多操作要做。
    猜你喜欢
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多