Подсчет, сколько раз строка появляется в файле CSV - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть фрагмент кода, который должен сказать мне, сколько раз слово встречается в файле 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)

Есть два слова, потому что я не знал, как сделать его без учета регистра.Чтобы проверить это, я использовал функцию поиска в слове по всему файлу (используя только одно из слов, так как там я мог выполнять поиск без учета регистра) и получил более чем вдвое больше, чем рассчитал мой код.

Сначала я использовал функцию value_counts(), но я получил разные значения для одного и того же слова (поиск Exmple_word1 появлялся 32 и 56 раз и 2 раза и т. Д. Я как бы застрял там на некоторое время, ноэто заставило меня задуматься. Я использую две клавиатуры на своем телефоне, которые я регулярно меняю - может ли быть так, что одни и те же слова на самом деле могут отличаться, и это объясняет, почему я получаю эти результаты?

Кроме того, я в значительной степенипроверил все источники по этому вопросу, и я нашел разные подходы, которые на самом деле не делали то, что я от них хочу (например, метод value_counts())

Если это так, как я могу это исправить?

1 Ответ

0 голосов
/ 09 декабря 2018

Обратите внимание на некоторые ошибки в вашем коде:

  1. key_word1 или key_word2 - это «ленивый», что означает, что если левая часть - «key_word1» оценена как True, то она выиграет »даже взглянуть на key_word2.Проверка будет вызываться только в том случае, если в строке появилось key_word1.

Пример выделения:

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
Чувствительность к регистру - не усердно работайте, вы, вероятно, можете прочитать строчную строчку в нижнем регистре, просто не удерживая 2 слова ..

угадать решение, которое выпоиск должен выглядеть примерно так:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...