Python if заявление не будет выполняться для CSV - PullRequest
0 голосов
/ 03 июня 2018

Я пытаюсь подсчитать, сколько раз определенное слово появляется в CSV-файле.

import csv

path = r'C:\Users\Ahmed Ismail Khalid\Desktop\test.csv'
str = "line"
count = 0


with open(path,'rt',encoding="utf-8") as f :
    reader = csv.reader(f)
    for row in reader :
       print(row)
       if str == row[0] :
       count = count + 1

print("\n \n The count is :",count)

Всякий раз, когда я запускаю код, я всегда получаю вывод 0 для счетчика.Однако все строки распечатываются.Мой CSV-файл имеет два столбца, идентификатор и текст, и данные, как показано ниже:

id               text
1                this is line 1
2                this is line 2
3                this is line 3
4                this is line 4

Вы можете видеть, что все строки содержат str и число должно быть 4, но оно всегда печатается как 0.

Любая помощь будет оценена.

Спасибо

Ответы [ 3 ]

0 голосов
/ 03 июня 2018
import csv

count = 0
find = 'line'

with open('test.csv', 'rt', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        line = ', '.join(row)
        if find in line:
            count = count + 1

print('The count is :', count)

К вашему сведению: вы можете избежать объединения, если хотите подсчитать, сколько раз слово появляется в файле.Просто прочитайте файл построчно без модуля csv.

0 голосов
/ 03 июня 2018

Укажите 'newline', 'delimiter' и 'quote char' точно, чтобы получить желаемый результат при открытии CSV-файла.Смотрите пример ниже:

>>> import csv
>>> with open('eggs.csv', newline='') as csvfile:
...     spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
...     for row in spamreader:
...         print(', '.join(row))
Spam, Spam, Spam, Spam, Spam, Baked Beans
Spam, Lovely Spam, Wonderful Spam
0 голосов
/ 03 июня 2018

Используйте in для поиска вашей строки.

Пример:

with open(path,'rt',encoding="utf-8") as f :
    reader = csv.reader(f)
    for row in reader :
       print(row)
       if str in row[1] :
           count = count + 1

Редактировать в соответствии с комментарием

import csv
checkStr = 'line'
result = []
with open(path,'rt',encoding="utf-8") as f :
    reader = csv.reader(f)
    for row in reader :
       if checkStr not in row[1]:    #Check if 'line' not in row
           result.append(row)

with open(filename,'w') as f:        #Write new result. 
    writer = csv.writer(f)
    for row in result:
        writer.writerow(row)
  • Добавить все строки, которые не имеют checkStr
  • Записать результат в новый файл.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...