2016-07-22 2 views
-3

트위터에서 사용자 이름과 관련하여 사용자 위치를 긁어 내려고합니다.구문 분석 사용자 위치 추출 사용자 이름 Twitter

입력 : 나는 아마도 지리적 위치 지리적 좌표를 찾으려면 : 사용자 목록 개 이상의 50K 사용자 이름

AkkiPritam,6.77E+17,12/15/2015,#chennaifloods 
AkkiPritam,6.77E+17,12/15/2015,#bhoomikatrust 
AkkiPritam,6.77E+17,12/15/2015,#akshaykumar 
gischethans,6.77E+17,12/15/2015,#chennaifloods 
mid_day,6.77E+17,12/15/2015,#bollywood 
mid_day,6.77E+17,12/15/2015,#chennaifloods 
Nanthivarman16,6.77E+17,12/15/2015,#admkfails 
Nanthivarman16,6.77E+17,12/15/2015,#jayafails 
Nanthivarman16,6.77E+17,12/15/2015,#stickergovt 
Nanthivarman16,6.77E+17,12/15/2015,#chennaifloods 
AdilaMatra,6.77E+17,12/15/2015,#chennaifloods 
AdilaMatra,6.77E+17,12/15/2015,#climatechange 
AdilaMatra,6.77E+17,12/15/2015,#delhichokes 
AdilaMatra,6.77E+17,12/15/2015,#smog 
HDFCERGOGIC,6.77E+17,12/15/2015,#chennaifloods 
HDFCERGOGIC,6.77E+17,12/15/2015,#tnfloods 
ImSoorej,6.77E+17,12/15/2015,#chennaifloods 
ImSoorej,6.77E+17,12/15/2015,#chennaimicr 

코드가 있습니다.

from __future__ import print_function 
import tweepy 
from tweepy import OAuthHandler 
from tweepy import Stream 
from tweepy.streaming import StreamListener 
import pandas as pd 
import csv 

consumer_key = 'xyz' 
consumer_secret = 'xyz' 
access_token = 'xyz' 
access_token_secret = 'xyz' 

data = pd.read_csv('user_keyword.csv') 
df = ['user_name', 'user_id', 'date', 'keyword'] 

def get_user_details(username): 
     userobj = api.get_user(username) 
     return userobj 

if __name__ == '__main__': 
    #authenticating the app (https://apps.twitter.com/) 
    auth = tweepy.auth.OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_token, access_token_secret) 
    api = tweepy.API(auth) 

    username = df['user_name'] 
    userOBJ = get_user_details(username) 
    print(userOBJ.location) 

오류 : 사용자 이름을 프로그램으로 분석하는 중 문제가 발생했습니다.

Traceback (most recent call last): 
    File "user_profile_location.py", line 38, in <module> 
    username = df['user_name'] 
TypeError: list indices must be integers, not str 
+1

음. 'df'는 사전이 아니며 문자열의 목록입니다. 정수 인덱스를 사용하여'df' 요소에 액세스해야합니다. –

+0

@ChitharanjanDas 감사합니다. 내가 어떤 변화를 주는지 ?? –

+0

여기에 코드'data = pd.read_csv ('user_keyword.csv')'가 DataFrame을 생성합니다. 'df = [ 'user_name', 'user_id', 'date', 'keyword']'는 파이썬리스트를 생성하고 그리스트를 변수'df'에 할당합니다. csv에 목록의 항목과 일치하는 제목이있는 경우'data [ 'user_name']'을 사용해야합니다. 가장 좋은 제안은 pandas [docs]를 읽는 것입니다 (http://pandas.pydata.org/pandas- docs/stable /) – toasteez

답변

1

당신은 내가 내가 user_keyword.csv 파일에는 헤더가 없다고 가정합니다 DataFrame

data = pd.read_csv('user_keyword.csv') 
df = ['user_name', 'user_id', 'date', 'keyword'] 

의 열을해야한다고 생각 무엇을 당신의 DataFrame과 '안양'을 정의하기 위해 '데이터'를 사용하는 추가 시도 :

data.columns = df 

df에 저장된 값으로 열 이름이 변경됩니다. 다음 나중에 대신 :

username = df['user_name'] 

시도 :

username = data['user_name'] 

이제 사용자 이름이 너무 get_user_details(username)는 하나의 문자열을 기대하지 말아야 전체 열을 유의하십시오.

+0

나는이 오류가 발생하고 코드가 정확하고 좀 더 파고해야 29 행, get_user_details userobj = api.get_user (사용자 이름) 파일 "/usr/local/lib/python2.7/dist-packages/tweepy/binder.py", 245 줄, _call return method.execute) 파일 "/usr/local/lib/python2.7/dist-packages/tweepy/binder.", 줄 229, 실행 중 raise TweepError (error_msg, resp, api_code = api_error_code) tweepy.error.TweepError : [{u'message ': 당신을 인증 할 수 없습니다.', u'code ': 32} ] –

+0

인증 오류 – toasteez

+1

인 것처럼 보입니다. 'userOBJ = get_user_details (username)'사용자 이름으로 사용자 이름을 대체 해보십시오.이 경우 인증 정보를 가지고 있지 않은 사용자를 인증하려고 시도합니다. – toasteez

관련 문제