2016-04-24 3 views
-1

私は初心者で、誰かのプログラムからコピーされたコードのトラブルシューティングを試みています。現在:TypeError:join()はちょうど1つの引数をとります(2が指定されています)

#INITIALIZE OUTPUT FILE AND WRITE HEADER ROW 
outfp = open(outfn, "w") 
outfp.write('.'.join(fields, '\t') + '\n') # header 

次のエラーを生成します。

例外TypeError:参加するには、()、正確に一つの引数(2与えられた)をとります。

他のスレッドで見たものに基づいて、私は "\ t" .joinがオプションかもしれないと思うが、どのように "\ t"と "\ t" n "である。どんな助けもありがたい。おかげ

+1

あなたは何を達成しようとしていますか?あなたの 'join'の期待される出力は? – Selcuk

答えて

1

あなたはstr.join()二つの引数を与えている:

'.'.join(fields, '\t') 

fields'\t' 2つの別々の引数です。私は'.'文字列で参加しようとすることはあったと仮定してい

'\t'.join(fields) 

:あなたはfieldsの値を結合するために、タブを使用したい場合は、あなたがstr.join()メソッドを呼び出した上で文字列として\tを使用する必要がありますこれがどのように機能するかについての誤解。あなたはタブ区切りファイルを作成しようとしている場合

outfp.write('\t'.join(fields) + '\n') # header 

しかし、あなたはcsv moduleを使用してオフにはるかに良いでしょう:あなたはそれに改行を追加することができますので、これは、文字列を生成

writer = csv.writer(outfn, delimiter='\t') 
writer.writerow(fields) 

csv.writer()オブジェクトは、文字列への変換、必要に応じた適切な引用、区切り文字の書き込み(上の例のタブ)、改行の追加を行います。

+0

ありがとう - それは動作します! –