[英]Counting how many times a string appears in a CSV file
我有一段代码可以告诉我一个单词在CSV文件中出现了多少次。 注意:该文件很大(2年的短信),这是我的代码:
key_word1 = 'Exmple_word1'
key_word2 = 'Example_word2'
counter = 0
with open('PATH_TO_FILE.csv',encoding='UTF-8') as a:
for line in a:
if (key_word1 or key_word2) in line:
counter = counter + 1
print(counter)
有两个词是因为我不知道如何使其不区分大小写。 为了测试它,我在整个文件中使用了单词中的find函数(因为只使用其中一个单词,因为我能够在其中进行不区分大小写的搜索),所以我收到的代码计算量是原来的两倍以上。
最初我确实使用了value_counts()
函数,但是我为同一个单词接收了不同的值(搜索Exmple_word1
出现了Exmple_word1
次和2次,依此类推。我被困在那里了一段时间,但它让我开始思考。使用我经常更换的手机上的两个键盘-可能是相同的单词实际上可能会有所不同,并且可以解释为什么我得到了这些结果?
另外,我几乎检查了所有有关此事的消息来源,发现实际上没有按照我希望他们做的事情采取不同的方法。 (例如, value_counts()
方法)
如果是这种情况,我该如何解决?
注意代码中的一些错误:
举一个例子:
w1 = 'word1'
w2 = 'word2'
s = 'bla word2'
(w1 or w2) in s
>> False
(w2 or w1) in s
>> True
2. 读取csv文件 :我建议使用csv包(只需将其导入),例如:
import csv
with open('PATH_TO_FILE.csv') as f:
for line in csv.reader(f):
# do you logic here
猜测您正在寻找的解决方案应该类似于:
import csv
word_to_search = 'donald'
with open('PATH_TO_FILE.csv', encoding='UTF-8') as f:
for line in csv.reader(f):
if any(word_to_search in l for l in map(str.lower, line)):
counter += 1
在输入上运行:
bla,some other bla,donald rocks
make,who,great
again, donald is here, hura
将导致:
counter=2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.