Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何处理1GB的文本数据?_Php_Regex_Text - Fatal编程技术网

Php 如何处理1GB的文本数据?

Php 如何处理1GB的文本数据?,php,regex,text,Php,Regex,Text,任务: 处理3个大小接近1GB的文本文件,并将其转换为csv文件。源文件具有自定义结构,因此正则表达式非常有用 问题: 没问题。我使用php来实现它,这很好。我实际上不需要更快地处理文件。我只是好奇你一般会如何处理这个问题。最后,我希望看到一些简单方便的解决方案,它们的性能可能比php更快 @费利克斯 我确信这一点。:)如果我完成了整个项目,我可能会将其发布为跨语言代码乒乓球 @标记 我的方法目前是这样工作的,唯一的例外是我缓存了几百行以保持低文件写入。经过深思熟虑的记忆权衡可能会挤出一些时间。

任务: 处理3个大小接近1GB的文本文件,并将其转换为csv文件。源文件具有自定义结构,因此正则表达式非常有用

问题: 没问题。我使用php来实现它,这很好。我实际上不需要更快地处理文件。我只是好奇你一般会如何处理这个问题。最后,我希望看到一些简单方便的解决方案,它们的性能可能比php更快

@费利克斯 我确信这一点。:)如果我完成了整个项目,我可能会将其发布为跨语言代码乒乓球

@标记
我的方法目前是这样工作的,唯一的例外是我缓存了几百行以保持低文件写入。经过深思熟虑的记忆权衡可能会挤出一些时间。但我相信,到目前为止,其他方法可以击败php,比如充分利用*nix工具集。

首先,使用哪种语言可能并不重要,因为它可能会受到i/O限制。更重要的是你要使用有效的方法/算法。特别是,如果可能的话,您希望避免将整个文件读入内存,并避免在将其写入磁盘之前将结果连接成一个巨大的字符串


相反,使用流式处理方法:读取一行输入,处理它,然后写入一行输出。

我会找到的。

Perl是文本处理的老大师,有充分的理由。不过,我相信Perl的许多优点今天都可以在Python中找到,而且是以一种更容易理解的方式,因此当涉及到文本解析时,我通常使用Python(我以前使用Python对GB文件进行过解析)

AWK或sed可能也具有闪电般的速度,但不像Perl-och-Python那样易于扩展。在您的特定情况下,除了解析和重新格式化输出之外,您不想做更多的事情,但是如果您想做更多的事情,那么使用Perl/Python就更容易了


我真的找不到反对Python和其他东西的论据,所以我想这是我的建议。

我如何处理您询问的大量文本数据
perl-p's/regex/magic/eg'
(或一些类似的/更复杂的变体)

它非常适合这项工作,不包括极少数需要最绝对快速的最高性能(几乎所有脚本语言都失败)的情况


它是广泛可用的,快速,简洁。我正在向一些同事教授perl,他们似乎对perl在一两行代码中所能完成的看似不可思议的壮举感到敬畏。开玩笑的是,在保持可读性的同时,这样做是完全可行的(假设您对该语言有合理的理解,并且不想为未来的维护人员制造地狱)。

我想看看您的PHP解决方案。为什么不展示一个预期输入和输出的示例?