繰り返しがそれほど悪くない場合もあります。
しかし、いずれにせよ、あなたがこのような何か試すことができます。
#!/usr/bin/env python
# script.py
def process_file(filename, func1, func2):
with open(filename) as f:
for line in f:
if '1' in line:
func1(line)
if '2' in line:
func2(line)
def main():
counters = {1: 0, 2: 0}
def func1(line):
# TODO Add some logic based on line value here
counters[1] += 1
def func2(line):
counters[2] += 1
process_file('table.csv', func1, func2)
return counters
if __name__ == '__main__':
print(main())
をし、ファイルがある場合:
$ cat table.csv
1 just one
1 2 one and two
1
1
0
0
2
2 1
1 0 2
0
し、スクリプトを実行します。
python script.py
をあなたが取得します次の出力:
{1: 6, 2: 3}
また、あなたがあなたのif
文の述語を考慮することができます
def process_file(filename, func1, func2, predicate1, predicate2):
with open(filename) as f:
for line in f:
if predicate1(line):
func1(line)
if predicate2(line):
func2(line)
def predicate1(line):
return 'REW' in line or 'LOSE' in line
は素敵な関数名を選択することを忘れないでください!
*リファクタリングが必要だと思います。そして私はジェネレータを作る必要があると思います*あなたは何をしていますか? –
繰り返しコードを関数にするだけで、関数を呼び出すことはできますか? – coder
これをどのようにリファクタリングするかは、括弧で囲まれたコードでできることに非常に依存します。 – chepner