我编写了一个实用程序来扫描包含字母字符的所有空格分隔字段的文本文件,它工作得很好但是非常慢,因为我将每行分成单词并扫描每个单词,有更快的方法吗?
谢谢.
这是代码:
#!/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)
你的程序有一个错误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
.
归档时间: |
|
查看次数: |
66 次 |
最近记录: |