Home > database >  Indexing a multiple characters from a csv file
Indexing a multiple characters from a csv file

Time:03-30

I am attempting to index specific characters to their own variable, and I am only able to do this for 1 character.

with open(fileName) as f:
    count1 = sum(l[0] == '1' for l in f)
    count2 = sum(l[0] == '2' for l in f)

print(count1)
print(count2)

This is my output

5 0

According to the values in the csv file, it should be:

5 4

I should mention, when I change the value from '1' to '2' in the first variable, it does give me 4, for some reason I cannot do both though.

CodePudding user response:

Well, once you've iterated over f once, f is exhausted. That is, reading from it will return nothing.

There are basically 2 ways to fix this:

1: open the file twice

with open(fileName) as f:
    count1 = sum(l[0] == '1' for l in f)
with open(fileName) as f:
    count2 = sum(l[0] == '2' for l in f)

2: read the file into memory and use that

with open(fileName) as f:
    lines = f.readlines()

count1 = sum(l[0] == '1' for l in lines)
count2 = sum(l[0] == '2' for l in lines)

Which of the two you use is up to you.

(code is untested. might contain typos)

  • Related