更快地查找文本文件中的所有单词

ihe*_*cpp 2 python isalpha

我编写了一个实用程序来扫描包含字母字符的所有空格分隔字段的文本文件,它工作得很好但是非常慢,因为我将每行分成单词并扫描每个单词,有更快的方法吗?

谢谢.

这是代码:

#!/bin/python
import argparse
import sys
import time

parser = argparse.ArgumentParser(description='Find all alpha characters in 
an input file')
parser.add_argument('file', type=argparse.FileType('r'), 
help='filename.txt')

args = parser.parse_args()

def letters(input):
    output = []
    for character in input:
        if character.isalpha():
            output = input
    return output

def main(argv):

    start = time.time()
    fname = sys.argv[1]

    f = open(fname)
    for line in f:
        words = line.rstrip().split()
        for word in words:
            alphaWord = letters(word)
            if alphaWord:
                print(alphaWord)
    f.close()

    end = time.time()
    elapsed = end - start
    print "%s secs elapsed" % elapsed

if __name__ == "__main__":
    main(sys.argv)
Run Code Online (Sandbox Code Playgroud)

alf*_*sin 5

你的程序有一个错误letters():

def letters(input):
    output = []
    for character in input:
        if character.isalpha():
            output = input # after we get here we'll keep iterating
                           # even though the result will not change
    return output
Run Code Online (Sandbox Code Playgroud)

你正在做的是迭代所有字母,即使其中一个是字母数字,你也会保存输入,output但你也会继续迭代剩下的字符 - 这不会添加任何东西.

要么检查所有字符(然后程序返回错误的结果),要么程序返回正确的结果,你可能想要break在行之后:output = input.