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'bNOTSUREHEREb', username)
Advertisement
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"