web-dev-qa-db-fra.com

Vérifier si la chaîne est en CSV

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)
14
jars121

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"
25
zmo

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.

1
Paco
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]))
0
OllieTaiani