2017-07-08 72 views
0

我是python的新手,我正在尋找一些幫助來創建一個存儲來自兩個不同變量的數據的循環。此方法僅保存第一條推文。將數據保存到不同變量的csv

# Twitter Loop 

for tweet in tweepy.Cursor(api.search,q=search+ 
     " -filter:retweets", 
     result_type='recent', 
     lang="en").items(num_tweets): 

    raw = tweet.text 

    # Text processing 

    clean = re.sub(r"(?:@\S*|#\S*|http(?=.*://)\S*)", "", raw) 

    result = cool.api(clean) 

# CSV File 

import csv 
f = open("file.csv", "a") 
c = csv.writer(f) 
c.writerow([clean, result]) 
f.close() 

我做了很多的嘗試,我不知道什麼是應該做it.n我是否應爲每一個變量循環的正確方法是什麼?

回答

1

簡單。您需要將您的呼叫轉移到您的for循環內的csv.writerow()。這樣一來,每次迭代鳴叫將被寫入到CSV文件(或者更精確地說,從鳴叫grepped數據):

import csv 

f = open("file.csv", "a", newline="") 
c = csv.writer(f) 

for tweet in tweepy.Cursor(api.search,q=search+ 
     " -filter:retweets", 
     result_type='recent', 
     lang="en").items(num_tweets): 

    raw = tweet.text 
    clean = re.sub(r"(?:@\S*|#\S*|http(?=.*://)\S*)", "", raw) 
    result = cool.api(clean) 
    c.writerow([clean, result]) # Write each tweet to the csv file. 
f.close() 

你的代碼可以使用上下文經理聲明with提高。這意味着無論發生什麼情況,您的文件將始終關閉:

import csv 


with open('file.csv', 'a') as file: 
    c = csv.writer(file) 
    for tweet in tweepy.Cursor(api.search,q=search+ 
     " -filter:retweets", 
     result_type='recent', 
     lang="en").items(num_tweets): 

     raw = tweet.text 
     clean = re.sub(r"(?:@\S*|#\S*|http(?=.*://)\S*)", "", raw) 
     result = cool.api(clean) 
     c.writerow([clean, result]) 
+0

非常感謝!你知道爲什麼我的結果之間有空行嗎? –

+0

你的意思是你正在寫入csv文件的行之間有額外的行,@YoussefS。 –

+0

是http://imgur.com/a/hmX8S –