jars121 jars121 - 10 days ago 6
Python Question

Check whether string is in CSV

I want to search a CSV file and print either

True
or
False
, depending on whether or not I found the string. However, I'm running into the problem whereby it will return a false positive if it finds the string embedded in a larger string of text. E.g.: It will return
True
if string is
foo
and the term
foobar
is in the CSV file. I need to be able to return exact matches.

username = input()

if username in open('Users.csv').read():
print("True")
else:
print("False")


I've looked at using
mmap
,
re
and
csv
module functions, but I haven't got anywhere with them.

EDIT: Here is an alternative method:

import re
import csv

username = input()

with open('Users.csv', 'rt') as f:
reader = csv.reader(f)
for row in reader:
re.search(r'\bNOTSUREHERE\b', username)

zmo zmo
Answer

when you look inside a csv file using the csv module, it will return each row as a list of columns. So if you want to lookup your string, you should modify your code as such:

import csv

username = input()

with open('Users.csv', 'rt') as f:
     reader = csv.reader(f, delimiter=',') # good point by @paco
     for row in reader:
          for field in row:
              if field == username:
                  print "is in file"

but as it is a csv file, you might expect the username to be at a given column:

with open('Users.csv', 'rt') as f:
     reader = csv.reader(f, delimiter=',')
     for row in reader:
          if username == row[2]: # if the username shall be on column 3 (-> index 2)
              print "is in file"
Comments