Je souhaite rechercher un fichier CSV et imprimer True
ou False
, selon que j'ai trouvé la chaîne ou non. Cependant, je rencontre le problème suivant: il renvoie un faux positif s'il trouve la chaîne incorporée dans une chaîne de texte plus grande. Par exemple: il retournera True
si chaîne est foo
et que le terme foobar
est dans le fichier CSV. Je dois pouvoir renvoyer des correspondances exactes.
username = input()
if username in open('Users.csv').read():
print("True")
else:
print("False")
J'ai envisagé d'utiliser les fonctions de module mmap
, re
et csv
, mais je ne les ai nulle part.
EDIT: Voici une méthode alternative:
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)
lorsque vous regardez à l'intérieur d'un fichier csv à l'aide du module csv
, il renvoie chaque ligne sous forme de liste de colonnes. Donc, si vous voulez rechercher votre chaîne, vous devez modifier votre code en tant que tel:
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"
mais comme il s’agit d’un fichier csv, vous pouvez vous attendre à ce que le nom d’utilisateur se trouve dans une colonne donnée:
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"
Vous devriez jeter un coup d'œil au module csv en python.
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
Il suppose que votre délimiteur est une virgule (remplacez-le par le délimiteur. Notez que le nom d'utilisateur doit être défini auparavant. Modifiez également le nom du fichier . Le code parcourt toutes les lignes du fichier CSV. Row une liste de chaîne contenant chaque élément de votre ligne. Par exemple, si vous avez ceci dans votre fichier CSV: Joe,Peter,Michel
, la ligne sera ['Joe', 'Peter', 'Michel']
. Ensuite, vous pourrez vérifier si votre nom d'utilisateur figure dans cette liste.
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]))