高效分析大文本的方案

【问题】

What’s the most efficient way to parse a large text file?

I’m trying to optimize some code. I have to open a large text file, match each line against a regular expression, and then process the results.

I’ve tried the simple approaches:

  
 for line in my_file:  
 match = my_regx.match(line)  
 process( match.groups() )  
and  
 data = my_file.read().splitlines()  
 for line in data:  
 # etc.  

Neither is terribly speedy. Does anyone have a better method?

【回答】

多线程并行计算可以提高匹配的速度,但 python 的多线程代码比较复杂,而且涉及按字节数对文件分段的问题,处理起来并不轻松。使用 SPL 就简单多了,可将文件 file1.txt 分为多段,每线程计算一段,并用正则表达式匹配出符合条件的行数据,最后合并结果并输出到文件。具体代码如下:

A
1=file("D:\\file1.txt")
2=A1.cursor@m(;4).(~.array().concat())
3=A2.regex(".*smile.*")
4=file("D:\\result.txt").export(A3)

正则表达式功能强大,但性能不高,如果匹配规则不复杂时,还可以采用性能更高的 like 函数,比如:

A
1=file("D:\\file1.txt")
2=A1.cursor@m(;4)
3=A2.select(like(#1,"*smile*"))
4=file("D:\\result.txt").export(A5)

集算器还支持丰富的计算函数,比如分组汇总、排名排序、关联计算、多文件查询、归并查找,易于实现各种复杂的算法逻辑。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值