我有一段代码应该告诉我一个单词在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
出现了32、56次和2次,依此类推。有一阵子,但让我开始思考。我在手机上使用了两个键盘,这些键盘会定期更换-可能是相同的单词实际上可能会有所不同,并且可以解释为什么我得到了这些结果吗?
此外,我几乎检查了所有有关此问题的消息源,发现了实际上无法实现我希望他们做的事情的不同方法。 (例如value_counts()
方法)
如果是这种情况,我该如何解决?
答案 0 :(得分:2)
请注意您的代码中的一些错误:
举个例子:
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