0

AIM: 以下の API 検索からのデータを CSV ファイルに解析する方法を見つける必要があります。検索は、次の形式で結果を返します。

[(u'Bertille Maciag', 10), (u'Peter Prior', 5), (u'Chris OverPar Duguid', 4), (u
'Selby Dhliwayo', 4), (u'FakeBitch!', 4), (u'Django Unchianed UK', 4), (u'Padrai
g Lynch ', 4), (u'Jessica Gunn', 4), (u'harvey.', 4), (u'Wowphotography', 3)]

私はPythonの初心者であり、どんな助けでも大歓迎です

import twitter, json, operator
#Construct Twitter API object
searchApi = twitter.Twitter(domain="search.twitter.com")
#Get trends
query = "#snow"
tweeters = dict()

for i in range(1,16):
    response = searchApi.search(q=query, rpp=100, page=i)
    tweets = response['results']
    for item in tweets:
        tweet = json.loads(json.dumps(item))
        user = tweet['from_user_name']
        #print user
        if user in tweeters:
            # print "list already contains", user
            tweeters[user] += 1
        else:
           tweeters[user] = 1

sorted_tweeters = sorted(tweeters.iteritems(), key=operator.itemgetter(1),     reverse=True)  

print len(tweeters)
print tweeters

print sorted_tweeters[0:10]
print 'Done!'
4

2 に答える 2

2

すべてのハードビットが機能しているように見えますが、「csv に保存」の部分が欠けているだけです。

import collections
import twitter, json, operator
#Construct Twitter API object
searchApi = twitter.Twitter(domain="search.twitter.com")
#Get trends
query = "#snow"
tweeters = collections.defaultdict(lambda: 0)

for i in range(1,16):
    response = searchApi.search(q=query, rpp=100, page=i)
    tweets = response['results']
    for item in tweets:
        user = item['from_user_name']
        #print user
        tweeters[user] += 1

sorted_tweeters = sorted(tweeters.iteritems(), key=operator.itemgetter(1), reverse=True)  

str_fmt = u'%s\u200E, %d \n'
with open('test_so.csv','w') as f_out:
    for twiters in sorted_tweeters:
        f_out.write((str_fmt % twiters).encode('utf8'))

encodeユーザー名にASCII以外の文字が含まれているため 、フォーマット文字列に「u」が必要です。u'\200Ecsv ファイルが rtl 言語のユーザー名で正しく見えるようにするための ltr マーカーです。

defaultdictまた、キーが存在するかどうかをチェックする必要がないこと を使用して、反復コードを少しクリーンアップしました。キーが存在しない場合は、ジェネレーター関数が呼び出され、その値が返されます (この場合は 0)。

itemはすでに でdictあり、それを json 文字列に変換してから元に戻す必要はありません。dict

于 2013-01-20T18:32:09.483 に答える
1

Python CSVモジュールを見たことがありますか?出力の使用:

import csv, os

x = [(u'Bertille Maciag', 10), (u'Peter Prior', 5), (u'Chris OverPar Duguid', 4), (u'Selby Dhliwayo', 4), (u'FakeBitch!', 4), (u'Django Unchianed UK', 4), (u'Padraig Lynch ', 4), (u'Jessica Gunn', 4), (u'harvey.', 4), (u'Wowphotography', 3)]

f = open("/tmp/yourfile.csv", "w")
writer = csv.writer(f, quoting=csv.QUOTE_ALL)
for i in x:
    writer.writerow(i)

f.close()
于 2013-01-20T18:29:31.543 に答える