2016-08-11 2 views
-4

В приведенном ниже коде я пытаюсь использовать len (list), чтобы подсчитать количество строк в массиве в каждой из переменных тегов из цикла while. Когда я сделал примерный параметр списка внизу, list2, он напечатал 5, который работает, но когда я сделал это с моими настоящими данными, он подсчитывал символы в массиве, а не количество строк. Мне нужна помощь в выяснении, почему это так, и я новичок в python, поэтому простейший способ, пожалуйста!Python len не работает

#!/usr/bin/python 

import json 
import csv 
from pprint import pprint 

with open('data.json') as data_file:  
data = json.load(data_file) 

#pprint(data) 

# calc number of alert records in json file 
x = len(data['alerts']) 
count = 0 
while (count < x): 
    tags = str(data['alerts'][count] ['tags']).replace("u\"","\"").replace("u\'","\'") 
    list = "[" + tags.strip('[]') + "]" 
    print list 
    print len(list) 
    count=count+1 

list2 = ['redi', 'asd', 'rrr', 'www', 'qqq'] 
print len(list2) 
+2

дать [mcve] пожалуйста. – Julien

ответ

4

Ваш список строительства list = "[" + tags.strip('[]') + "]" создает string, неlist. Итак, да, len работает, он подсчитывает символы в вашей строке.

Конструкция ваших тегов выглядит немного невелика, у вас есть словарь данных (data['alerts']), который затем конвертируется в строку и полоса «[]». Почему бы просто не использовать значение самого себя?

Также list - ужасное имя для вашей переменной. Это связано с внутренними значениями.

+0

Кроме того, вызов переменной 'list' - очень плохая идея. – Keozon

1
list = "[" + tags.strip('[]') + "]" 
print list 
print len(list) 

По иронии судьбы, list - это строка, а не список. Вот почему называя len на нем «рассчитывает символы в массиве»

0

вам нужно, чтобы убедиться, что переменная является списком, а не улица, попытка:

print(type(yourList)) 

, если он показывает, что это это улица, то попробуйте следующее:

len(list[yourList) 

надеюсь, что это ответ на ваш вопрос

и когда вы хотите установить переменный список, попробуйте это:

myList = [] 
for blah in blahblah: 
    myList.append(blah) 

Я думаю, что это определенно решило вашу проблему, поэтому я надеюсь, что вы заметили эту часть.

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