我想搜索一个CSV文件并打印True
或False
,这取决于我是否找到了字符串。但是,我遇到了一个问题,即如果它发现嵌入较大文本字符串中的字符串,它将返回假阳性。例如:如果字符串是True
并且术语foo
在CSV文件中,则它将返回foobar
。我需要能够返回完全匹配项。
username = input()
if username in open('Users.csv').read():
print("True")
else:
print("False")
我已经看过使用
mmap
,re
和csv
模块函数,但它们却一无所获。编辑:这是一种替代方法:
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)
最佳答案
当您使用csv
模块查看csv文件时,它将返回每一行作为列列表。因此,如果要查找字符串,则应按以下方式修改代码:
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"
但由于它是一个csv文件,因此您可能希望用户名位于给定的列中:
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"