2016-10-03 5 views
0

私のCSVに書き込むとき、私のリスト項目は、私が追加機能を使用していても個々の文字列に分割されます。問題は私がどのようにwriterowを使用しているのかと思いますが、私はあまりよく分かりません。CSVへの書き込み時にリストアイテムが個々の文字列に分割されないようにするにはどうすればよいですか?

これは私のコードです。それは

@,e,t,r,i,t,a,b,a,u,g,h, ,g,o,r,g,e,o,u,s

+0

おかげ@ozgur:行は、その行として使用されてから文字列を防止するリテラルのリストを使用します。 writer.writerow(li、delimiter = "、") TypeError:writerow()はキーワード引数を取りません また、これをcsv.writer引数として入れてみましたが、前と同じように個々の文字列があります。 –

答えて

0

writerowが期待なりwriter.writerow(LI)を通過させた後

twitter = Twython(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET) 

input_path = 'doc_list.csv' 
output_path = 'doc_tweets.csv' 

docs_array = [] 

with open(input_path, 'r') as doc_file: 
    docs = csv.reader(doc_file) 
    for row in docs: 
     docs_array.append(row) 

with open(output_path, 'w') as tweets_file: 
    writer = csv.writer(tweets_file, quoting=csv.QUOTE_MINIMAL, lineterminator='\n') 
    for name in docs_array: 
     tweet_list = [] 
     user_timeline = twitter.get_user_timeline(screen_name=name, count=100, include_retweets=False) 
     for tweet in user_timeline: 
      tweet_list.append(tweet['text']) 
     for li in tweet_list: 
      writer.writerow(li) 
     del tweet_list[:] 

del docs_array[:] 

それはのwriterowのために反復される前のリストにあるものの例としては、

, '@etritabaugh gorgeous',

ですiterable、文字列を取得すると、文字列内の各文字はに分割されますを別の列として使用します。

CSVへの単一行としてリスト全体を書き込むには、あなたがループための第二を必要としません。代わりに、あなたのように、リスト内の各項目を書きたい場合は

for tweet in user_timeline: 
    tweet_list.append(tweet['text']) 
writer.writerow(tweet_list) 

は、私は、引数としてのwriterowにそれを追加しようとしたが、このエラーが返された、

for tweet in user_timeline: 
    tweet_list.append(tweet['text']) 
for li in tweet_list: 
    writer.writerow([li]) 
#     ^^ 
+0

ありがとう、それは完全に働いた。 –

+0

モーセは、liと[li]の違いを説明する良いリソースを見つけることができません。あなたはその2つの違いを簡単に説明できますか?再度、感謝します。 –

+0

[docs](https://docs.python.org/3/library/csv.html#writer-objects)から:*行は文字列または数字の繰り返し可能でなければなりません* –

関連する問題