我有一些大数据集纯文本文件(wikipedia文章),我必须删除拉丁-1字符,如下所示:
kemer } Åehir kır toplam }}
use specific terminology . for example , it is often more appropriate for people or things from ethiopia ( a country in africa ) to be described as ethiopian , not carelessly ( with the risk of stereotyping ) as african .
bat avg .
label à¨à¨¾à¨²à¨
à¨
ਡà©à¨²à¨« ਹਿà¨à¨²à¨° ਨ੠ਦà©à¨¸à¨¼ ਵਿਠà¨à¨®à¨¿à¨à¨¨à¨¿à¨¸à¨ ਪਾਰà¨à© ਬਣਾà¨à¨£ ਦ੠à¨à¨à¨¾à¨à¨¼à¨¤ ਦà©à¨£ ਤà©à¨ ਨਾà¨à¨¹ à¨à¨° ਦਿਤà©à¥¤
alt }
if not extra_units then
utc_offset +
à¨à¨¬à¨à¨¾ ( )
demographics _title regional
我只想
à¨à¨¾à¨²à¨
à¨
ਡà©à¨²à¨« ਹਿà¨à¨²à¨° ਨ੠ਦà©à¨¸à¨¼ ਵਿਠà¨à¨®à¨¿à¨à¨¨à¨¿à¨¸à¨ ਪਾਰà¨à© ਬਣਾà¨à¨£ ਦ੠à¨à¨à¨¾à¨à¨¼à¨¤ ਦà©à¨£ ਤà©à¨ ਨਾà¨à¨¹ à¨à¨° ਦਿਤà©à¥¤
à¨à¨¬à¨à¨¾
并最终修剪出微不足道的空白线条。
我采用的方法如下
<?php
$in = fopen('php://stdin','rb');
while($line = stream_get_line($in, 64000)) {
foreach(str_split($line) as $char) {
$ordChar = ord($char);
if($ordChar > 127 || $ordChar <= 31) {
echo $char;
}
}
}
cat wiki.hi.txt | php -d memory_limit=1024M escape_latin.php > wiki.hi.esc.txt
这种方法可以正常工作,唯一的问题是,随着文件大小的增长,性能变得越来越差,正如我用
watch du -h filename
stream_get_line
把台词流出来。
看见
here
[更新]
我在这里报告的是从提出的替代方法得到的一些结果
使用
regex
A
文件
$ time tr -d "[:alnum:][:punct:]" < wiki.as.txt > wiki.as.test.txt
real 0m2.990s
user 0m2.818s
sys 0m0.088s
A
约100MB
文件
$ time tr -d "[:alnum:][:punct:]" < wiki.gu.txt > wiki.gu.test.txt
real 0m7.322s
user 0m6.772s
sys 0m0.282s
A
文件
$ time tr -d "[:alnum:][:punct:]" < wiki.ta.txt > wiki.ta.test.txt
real 0m35.973s
user 0m33.498s
sys 0m1.254s
A
文件
$ time tr -d "[:alnum:][:punct:]" < wiki.ja.1.txt > wiki.ja.1.test.txt
real 1m5.409s
user 1m0.669s
sys 0m2.068s