Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计数器在CSV读取脚本中不工作_Python_Loops_Counter - Fatal编程技术网

Python 计数器在CSV读取脚本中不工作

Python 计数器在CSV读取脚本中不工作,python,loops,counter,Python,Loops,Counter,这是我有史以来第一个关于Stackoverflow/step to real Codeing的Python脚本/问题 我希望计算某些字符串在我迭代的行中出现的次数,然后打印出值。我没有设置分隔符,因此只有一列。本质上我是说,如果列包含所述字符串,则添加到计数器 问题是,我的所有变量的输出都是0。有什么建议吗 这是代码(对不起,太长了) 您正在使用上下文管理器在外部读取文件。 您的代码应该是: with open('example.csv', 'r') as csvfile: reader

这是我有史以来第一个关于Stackoverflow/step to real Codeing的Python脚本/问题

我希望计算某些字符串在我迭代的行中出现的次数,然后打印出值。我没有设置分隔符,因此只有一列。本质上我是说,如果列包含所述字符串,则添加到计数器

问题是,我的所有变量的输出都是0。有什么建议吗

这是代码(对不起,太长了)


您正在使用上下文管理器在
外部读取文件。
您的代码应该是:

with open('example.csv', 'r') as csvfile:
    reader = csv.reader(csvfile)
否则,您将在读取文件之前打开和关闭文件

编辑:


正如@yann vernier所指出的,
读卡器必须在
块中使用。也就是说,
循环的
应该全部缩进。

您正在使用
上下文管理器读取
外部的文件。
您的代码应该是:

with open('example.csv', 'r') as csvfile:
    reader = csv.reader(csvfile)
否则,您将在读取文件之前打开和关闭文件

编辑:

正如@yann vernier所指出的,
读卡器必须在
块中使用。也就是说,for
循环的
应该全部缩进

我没有设置分隔符,因此只有一列

如果未指定分隔符,则使用默认分隔符,即逗号
。因此,列表
行中仍然可能有多个列和多个元素

现在,
googlebot\u string
中的字符串也包含逗号,因此,如果此字符串出现在输入CSV中,则它永远不会作为单个元素出现在
行中。因此,
googlebot\u行中的字符串总是
false
。其他一些
*\u字符串
字符串也有同样的问题

您可以将该文件作为文本文件打开(无需使用
csv
模块)并在行上迭代

肮脏的解决方案是将输入文件中不存在的字符指定为
csv.reader
的分隔符

我没有设置分隔符,因此只有一列

如果未指定分隔符,则使用默认分隔符,即逗号
。因此,列表
行中仍然可能有多个列和多个元素

现在,
googlebot\u string
中的字符串也包含逗号,因此,如果此字符串出现在输入CSV中,则它永远不会作为单个元素出现在
行中。因此,
googlebot\u行中的字符串总是
false
。其他一些
*\u字符串
字符串也有同样的问题

您可以将该文件作为文本文件打开(无需使用
csv
模块)并在行上迭代


一个糟糕的解决方案是指定一个输入文件中不存在的字符作为
csv的分隔符。reader

看起来有相当多的重复,而
否则如果
-控制流似乎没有任何意义,因为它在每个字符串中最多增加一个计数器。您是否考虑过使用数组而不是一千个单独的变量?对于这类东西,有一个方便的字典子类,名为@Andreytukin。您能详细说明一下它的意义吗?一行中只会出现一个我创建的变量(由#计数器标识符下的字符串表示)。因此,我只希望它们中的一个在每一行中递增。您能否澄清一下,在第行中使用elif googlebot_mobile_字符串的语法是否正确。我将研究数组以使内容更易于阅读。@Matt啊,好吧。。。如果您希望每行最多有一个关键字,那么
elif
是正确的,甚至比每次检查每个关键字更有效。如果每行有一个以上的关键字,它不会像预期的那样工作,但显然这不是必需的。尽管如此,还是有相当多的重复。看起来有相当多的重复,而且
else if
-控制流似乎没有任何意义,因为它在每个字符串中最多增加一个计数器。您是否考虑过使用数组而不是一千个单独的变量?对于这类东西,有一个方便的字典子类,名为@Andreytukin。您能详细说明一下它的意义吗?一行中只会出现一个我创建的变量(由#计数器标识符下的字符串表示)。因此,我只希望它们中的一个在每一行中递增。您能否澄清一下,在第行中使用elif googlebot_mobile_字符串的语法是否正确。我将研究数组以使内容更易于阅读。@Matt啊,好吧。。。如果您希望每行最多有一个关键字,那么
elif
是正确的,甚至比每次检查每个关键字更有效。如果每行有一个以上的关键字,它不会像预期的那样工作,但显然这不是必需的。尽管如此,还是有相当多的重复。抱歉,当我复制粘贴代码时,代码一定没有正确翻译。我的密码和你的一模一样,这还不够。
读卡器
必须使用
with
块中的文件内容。很抱歉,在复制和粘贴代码时,代码一定没有正确翻译。我的密码和你的一模一样,这还不够。
阅读器
必须使用
块使用
中的文件内容。这解决了我的问题,谢谢!我最后用“作为分隔符,它起作用了。酷,我已经接受并投票了(投票不显示,因为我的代表数不到15个)。这解决了我的问题。谢谢!我最后用“作为分隔符,它起作用了。酷,我接受并投票了(投票不显示,因为我的代表数不到15个)