2016-09-29 8 views
0

私はファイルを読み込んで新しいファイルに書き込む必要のあるデータを処理する関数を持っています。しかし、関数内の文字列に変換したとは思っても、文字列形式ではないため、データをファイルに入れることはできません。私は何か見落としてしまったのですか、コードを追加する必要がありますか?トラブルシューティング、浮動小数点のリストを文字列に変換できません

def process_data(data_file): 
    data = open(data_file, "r") 
    next (data) 
    for line in data: 
     line = line.rstrip() 
     m = line.split("\t") 
     x = m[2:] 
     numbers = [float(i) for i in x] 
     avg = [float(sum(numbers))/len(numbers)] 
     max_num = [max(numbers)] 
     min_num = [min(numbers)] 
     main_list = avg + max_num + min_num 
     values = [str(i) for i in main_list] 
     print('\t'.join(map(str,values))) 

私はそれを書くしようとすると、私が手にエラーがある「引数なければならない私STRませんなし」

write(process_data(data_file)) 

答えて

1

あなたの関数がNoneを返します。 print戻り値は、文字列のリストに累積して、最後に改行で結合して返します(非効率な文字列の連結を避ける)

また、不器用なリストの作成を修正し、 str(2回実行)。

def process_data(data_file): 
    retval = [] 
    data = open(data_file, "r") 
    next (data) 
    for line in data: 
     line = line.rstrip() 
     m = line.split("\t") 
     x = m[2:] 
     numbers = [float(i) for i in x] 
     values = [float(sum(numbers))/len(numbers),max(numbers),min(numbers)] 
     retval.append('\t'.join(map(str,values))) 
    return "\n".join(retval) 

注意リーダライタとしてcsvモジュールを使用すると、多くの方が良いだろうことを、あなたにスプリットを大幅に節約参加し、strの変換...しかし、それは、コードレビューのためのより多くの仕事だでしょう。

+0

ありがとうございました!それは完璧に動作します! – fuk

+0

良い!今私の編集を参照してください。リスト作成の面で改善することができます。 1行に 'main_list'を作成します。 –

関連する問題