我想搜索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)
答案 0 :(得分:26)
当您使用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"
答案 1 :(得分: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文件中的所有行。 row一个包含行的每个元素的字符串列表。例如,如果您在CSV文件中有此内容:Joe,Peter,Michel
该行将为['Joe', 'Peter', 'Michel']
。然后,您可以检查您的用户名是否在该列表中。
答案 2 :(得分: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]))
答案 3 :(得分:-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