質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

2回答

25474閲覧

for文でエラーについて

JunMatsumoto

総合スコア76

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2016/05/15 02:03

ツイート情報を取得しSQL Serverに入れるスクリプトを作っています。

python

1#!/usr/bin/env python 2# -*- coding:utf-8 -*- 3 4# Tweepyライブラリをインポート 5import tweepy 6import pymssql 7 8auth = tweepy.OAuthHandler('xxxxx','xxxxxx') 9auth.set_access_token('xxxxxx','xxxxxx') 10 11tw = tweepy.API(auth) 12search_result = tw.search(q='検索ワード',rpp='1') 13print len(search_result) 14_conn = pymssql.connect(host="xxxx", user="sa", password="xxxxx", database="xxxx") 15_cur = _conn.cursor() 16 17print len(search_result) 18for r in len(search_result): 19 createtime = search_result[r].created_at 20 tweet_id = search_result[r].id 21 user_id = search_result[r].author.screen_name 22 text = search_result[r].text 23 24 sql = """USE heep; 25 IF EXISTS (SELECT tweet_id FROM tweets WHERE term = \'{tweet_id}\') 26 UPDATE tweets 27 SET text=\'{text}\', tweet_id=\'{tweet_id}\', user_id=\'{user_id}\', createtime=\'{createtime}\' 28 WHERE tweet_id = \'{tweet_id}\' 29 ELSE 30 INSERT INTO tweets 31 VALUES(\'{test}\', \'{tweet_id}\', \'{user_id}\', \'{createtime}\') 32 """.format(text=text, tweet_id=tweet_id ,user_id=user_id, createtime=createtime) 33 _cur.execute(sql) 34 _conn.commit() 35_conn.close()

print len(search_result) では、正常に「15」とカウントされてますが、
for r in len(search_result): とfor文の条件に入れた場合、

Traceback (most recent call last):
File "gettw.py", line 17, in <module>
for r in len(search_result):
TypeError: 'int' object is not iterable

とエラーがでて実行できません。

1つ1つを print search_result[0].text として
データが取得できる事は確認しています。

お手数ですが、解決方法をご教示頂きたく、
宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

len(search_result) は数字の15です。

pythonのfor文で取り出せるrは、他の言語のように0から14まで変化していくわけではなく、オブジェクトそのものが取り出されます。
したがって、今回の場合は
for r in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14] が得られるように
for r in range(len(search_result)) としなくてはなりません。

ただ、せっかくオブジェクトが取り出せるのですから、次のように書くのがpython らしい書き方かと思います。

python

1for result in search_result: 2 createtime = result.created_at 3 tweet_id = result.id 4 user_id = result.author.screen_name 5 text = result.text

投稿2016/05/15 03:57

lightson

総合スコア553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Python

1for r in search_result: 2 createtime = r.created_at

みたいな書き方はどうスかね。
Pythonはよく知りませんが。

投稿2016/05/15 02:17

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2016/05/15 02:23

for 文だけ修正するならこんな感じ? for r in range(0, len(search_result)):
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問