我想搜索一个CSV文件并打印TrueFalse,这取决于我是否找到了字符串。但是,我遇到了一个问题,即如果它发现嵌入较大文本字符串中的字符串,它将返回假阳性。例如:如果字符串是True并且术语foo在CSV文件中,则它将返回foobar。我需要能够返回完全匹配项。

username = input()

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

我已经看过使用mmaprecsv模块函数,但它们却一无所获。

编辑:这是一种替代方法:
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"

10-08 05:41
查看更多