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