从100k字中提取长度> = 4的单词

时间:2014-05-19 05:33:15

标签: python

我的文件是一行,一行中大约有100,000个单词。

如何才能以最快,最有效的方式提取长度大于或等于4的单词?

我考虑过使用正则表达式,但我不确定这是否是最好的方法。

3 个答案:

答案 0 :(得分:3)

列表理解效果很好:

[word for word in line.split() if len(word) >= 4]

答案 1 :(得分:2)

您可以在re' d文件上使用mmap,例如:

import mmap, re

with open('somefile') as fin:
    mf = mmap.mmap(fin.fileno(), 0, access=mmap.ACCESS_READ)
    words = re.findall('\w{4,}', mf)

答案 2 :(得分:1)

它们是否空间分开?您可以使用csv reader并将分隔符设置为空格,然后将其循环到len()> = 4。

更好的方法是使用this feature request中的自定义换行文件迭代器并将换行符设置为' &#39 ;. (您可以点击fileLineIter()的代码链接。

f = open(filename,'rb')
for word in fileLineIter(f,' ',' '):
    if len(word) >=4:
        do_something()