2016-09-19 12 views
1

以下のコードは、特定の接頭辞/接尾辞で始まり/終わる単語を示しています。リスト/ファイル中の特定の接頭辞/接尾辞で始まり/終わるすべての単語を見つけよう

string_list = [line.strip() for line in open("file.txt", 'r')] 
for word in string_list: 
    if word[-1] == "a": 
     print word 


string_list = [line.strip() for line in open("file.txt", 'r')] 
for word in string_list: 
    if word[0] == "fi": 
     print word 

どのようにすれば、巨大なデータに対して本当に速くなるように最適化できますか? また、どのように私は、事前に

python test.py --prefix fi 
python test.py --suffix o 

おかげのようなのparamを渡すことができます。

+0

は[argparse](https://docs.python.org/3/library/argparse.htmlを見てみましょう)paramsを渡すために –

+2

これを代わりに[codereview](http://codereview.stackexchange.com)に投稿してください。 –

+0

sys.argv []とargparseの両方の使い方は? –

答えて

2

wordが文字列の場合は、word[0] == "fi"はあなたの考え方をしません。

代わり複数文字接尾辞と接頭辞を確認するためにstartswithendswithを使用することができます。

string_list = open("file.txt", 'r') 

for word in string_list: 
    if word.startswith("fi") or word.endswith('a'): 
     print word 

あなたのスクリプトへのパラメータとして、接尾辞/プレフィックスを渡すためには、あなたはスピードが必要な場合は、単に低レベルの言語で書かれている GREPを、使用することができ argparse

+0

x = filter(lambda s:s.startswith( "fi")、string_list)に更新しました –

+0

sys.argv []とargparseの両方の使い方は? –

0

を見て飛び越しや境界によって、Pythonループよりも速くバインドされています。

また、ポータブルであるとLinux/Windowsの/ OSX上でうまく動作します/ ...

+0

grepが高速になる可能性がありますが、pyを使って十分速くなりたい –

関連する問題