2015-09-07 4 views
0

При выполнении кода, он показывает эту ошибку:Как исправить TypeError: строковые индексы должны быть целыми числами?

File "E:\python343\crawler.py", line 36, in <module> 
    if(x2['type']=='status'): 
TypeError: string indices must be integers 

Вот код:

#PRINTING YOUR FRIEND ALL "favorite_teams" 
fs = g.get_object("me/friends") 
for f in fs['data']: 
    #print f 
    #print f['name'],f['id'] 
    print (f['name']) 
    for x in g.get_object(f['id'])['favorite_teams']: 
     print (x['name']) 


#SEACHING TOP 10 PAGE ON INPUTTING PAGE NAME AND OUTPUT AS PAGE ID 
x= g.request('search', {'q' : 'TaylorSwift', 'type' : 'page', 'limit' : 1000})['data'][0]['id'] 

non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd) 

#GET ALL STATUS POST ON PARTICULAR PAGE(X=PAGE ID) 
for x1 in g.get_connections(x, 'feed')['data']: 
    print (str(x1).translate(non_bmp_map)) 
    for x2 in x1: 
     print (str(x2).translate(non_bmp_map)) 
     if(x2['type']=='status'): 
      x2['message'] 

Так как делать с x2['type'], чтобы исправить ошибку ??

Надеемся, что помогли, спасибо.

+1

Можете ли вы предоставить подробную информацию о 'x2'? – sam

+1

В сообщении об ошибке указано, что x2 - это строка. В этом случае обозначение «x2 [n]» означает n-й символ x2. Но индекс (n) должен быть целочисленным выражением, и вместо этого вы используете 'type', который является строкой. Вам нужно будет предоставить более подробную информацию, если вам нужна более конкретная помощь. – saulspatz

+0

Спасибо, я редактирую код в этом вопросе, пожалуйста, проверьте его. – Andi

ответ

1

x2 - это строка, а не объект ответа. Обходите это и изучите x2 в другом случае:

if isinstance(x2, dict): 
    if(x2['type']=='status'): 
     x2['message'] 
else: 
    # examine the data 
    print 'Unexpected data:', type(x2), x2 
+0

ОК, большое спасибо – Andi

+0

Добро пожаловать – rebeling

Смежные вопросы