Próbuję policzyć liczbę razy w pliku CSV pojawi się pewne słowo.

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)

Za każdym razem, gdy uruchomiłem kod, zawsze dostaję wyjście 0, aby policzyć. Jednak wszystkie wiersze są wydrukowane. Mój plik CSV ma dwie kolumny, identyfikator i tekst, a dane są jak poniżej:

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

Widać, że wszystkie linie zawierają str, a liczba powinna być 4, ale zawsze jest drukowana jako 0.

Każda pomoc będzie mile widziana.

Dzięki

0
Stevi G 3 czerwiec 2018, 15:26

3 odpowiedzi

Najlepsza odpowiedź
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)

FYI: Możesz uniknąć dołączenia, jeśli chcesz obliczyć, ile razy pojawia się w pliku. Wystarczy przeczytać plik przez linie bez modułu CSV.

0
Hannnn 3 czerwiec 2018, 12:33

Użyj in, aby poszukać twojego ciągu.

Np .:

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

edytuj zgodnie z komentarzem

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)
  • Dołącz wszystkie wiersze, które nie mają checkStr
  • Napisz wynik do nowego pliku.
0
Rakesh 3 czerwiec 2018, 13:10

Określ "Newline", "delimiter" i "Cytat Char" dokładnie, aby uzyskać pożądany wynik podczas otwierania pliku CSV. Zobacz przykład poniżej:

>>> 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
1
Saleh 3 czerwiec 2018, 12:33