在不使用文本文件的情况下计算python中的行

时间:2014-12-01 17:42:37

标签: python json list counting

我终于过滤了我的脚本以输出我想要的内容。 它有效......一半!

在这里一些了不起的人的帮助下,我设法创建了一个自动接受朋友对Snapchat的请求的脚本,虽然我想在其中有一个计数器,可以看到有多少确认的朋友。

虽然这不是最大的问题,但我已经修好了。 使用以下代码;

for friend in friends:
    if friend['type'] == 0:
        names = friend[u'name']
        print names

它可以很好地打印名称,例如我的结果是:

test.account2
test.account3
test.account4
etc...

到目前为止,这太棒了。

现在我想算一下,实际上有多少朋友打印这个号码。

所以在这种情况下,数字将是3(显然,不考虑"等等#34;记住)

尽管如此,我已经尝试过,len,count,str.count和许多其他事情,但它似乎并没有起作用。 首先,它打印出3次,我得到了,因为它的缩进。 但是将凹痕移回去,会让它“忘记”#34; names

到目前为止,我唯一要做的就是以下列方式打印所有3个名字的字母数:

13
13
13

我在这里忽略了什么,或者只是愚蠢?

非常感谢帮助!

2 个答案:

答案 0 :(得分:3)

您的names变量不是数组。它只是存储当前朋友项的名称,因为friends已循环。因此,您也可以3次获得13的长度,因为它只是遇到的特定名称字符串的字符数。

要获得一系列名称,您可以这样做:

names = []
for friend in friends:
    if friend['type'] == 0:
        names.append(friend[u'name'])

或更简单:

names = [friend[u'name'] for friend in friends if friend['type'] == 0]

然后len(names)将提供姓名计数。

答案 1 :(得分:3)

您看到的是13,因为这是每个名称test.account2等的长度。这是因为您在len上调用了names len(names)这不是你想要的。

初始化for循环上方的列表:name_list = []并将名称附加到此列表中:

name_list = []
for friend in friends:
    if friend['type'] == 0:
        names = friend[u'name']
        print names
        name_list.append(names)

print 'Added %d names' % (len(name_list))

最终print现在应根据您的示例转储3