22

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

username = input()

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

我看过 usingmmap和module 功能recsv但我没有任何地方可以使用它们。

编辑:这是另一种方法:

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)
4

4 回答 4

32

当您使用该模块查看 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"
于 2013-06-25T23:03:46.570 回答
1

你应该看看 python 中的 csv 模块。

is_in_file = False
with open('my_file.csv', 'rb') as csvfile:
    my_content = csv.reader(csvfile, delimiter=',')
    for row in my_content:
        if username in row:
            is_in_file = True
print is_in_file

它假定您的分隔符是逗号(替换为您的分隔符。请注意,用户名必须事先定义。还要更改文件的名称。代码循环遍历 CSV 文件中的所有行。行包含每个字符串的列表您的行的元素。例如,如果您的 CSV 文件中有这个:Joe,Peter,Michel该行将是['Joe', 'Peter', 'Michel']。然后您可以检查您的用户名是否在该列表中。

于 2013-06-25T23:01:08.777 回答
0
import csv
scoresList=[]
with open ("playerScores_v2.txt") as csvfile:
           scores=csv.reader(csvfile, delimiter= ",")
           for row in scores:
              scoresList.append(row)


playername=input("Enter the player name you would like the score for:")
print("{0:40} {1:10} {2:10}".format("Name","Level","Score"))

for i in range(0,len(scoresList)):
   print("{0:40} {1:10} {2:10}".format(scoresList[i] [0],scoresList[i] [1], scoresList[i] [2]))
于 2015-12-03T12:07:05.860 回答
-1
#!/usr/bin/python
import csv

with open('my.csv', 'r') as f:
    lines = f.readlines()
    cnt = 0

    for entry in lines:
        if 'foo' in entry:
            cnt += 1

    print"No of foo entry Count :".ljust(20, '.'), cnt
于 2018-07-11T19:48:48.943 回答