Python len无法正常工作

时间:2016-08-11 14:03:32

标签: python list python-2.7

在下面的代码中,我试图使用len(list)来计算while循环中每个标记变量中数组中字符串的数量。当我在底部list2上做了一个样本列表参数时,它打印了5个有效,但是当我用我的真实数据做的时候,它是计算数组中的字符,而不是字符串的数量。我需要帮助弄清楚为什么那样,我是python的新手,所以最简单的方法就可以了!

#!/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)

3 个答案:

答案 0 :(得分:4)

您的列表构建list = "[" + tags.strip('[]') + "]"会创建string a list。所以是的,len有效,它会计算字符串中的字符。

您的代码构造看起来有些偏差,您有一个数据字典(data['alerts']),然后将其转换为字符串,并剥离“[]”。为什么不使用只获得价值本身?

此外,list是您变量的可怕名称。这可能与内部价值发生冲突。

答案 1 :(得分:2)

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

具有讽刺意味的是,list是一个字符串,而不是一个列表。这就是为什么在它上面调用len&#34;正在计算数组中的字符&#34;

答案 2 :(得分:1)

你需要确保你的变量是一个列表而不是一个str, 尝试:

print(type(yourList))

如果它显示它是str,那么试试这个:

len(list[yourList)

希望这能回答你的问题

当你想建立一个列表变量时,试试这个:

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

我认为这些确实解决了你的问题,所以我希望你注意到这一部分。