在下面的代码中,我试图使用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)
答案 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)
我认为这些确实解决了你的问题,所以我希望你注意到这一部分。