it-swarm.com.de

Prüfen Sie, ob die Zeichenfolge in CSV enthalten ist

Ich möchte eine CSV-Datei durchsuchen und entweder True oder False drucken, je nachdem, ob ich die Zeichenfolge gefunden habe oder nicht. Ich bin jedoch mit dem Problem konfrontiert, bei dem ein falsch positives Ergebnis zurückgegeben wird, wenn die Zeichenfolge in eine größere Textzeichenfolge eingebettet wird. Beispiel: Es wird True zurückgegeben, wenn string foo ist und der Begriff foobar in der CSV-Datei enthalten ist. Ich muss in der Lage sein, genaue Übereinstimmungen zurückzugeben.

username = input()

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

Ich habe mir die Modulfunktionen mmap, re und csv angeschaut, aber ich habe nichts mit ihnen gemacht.

EDIT: Hier ist eine alternative Methode:

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

wenn Sie mit dem Modul csv in eine CSV-Datei schauen, wird jede Zeile als Liste von Spalten zurückgegeben. Wenn Sie Ihre Zeichenfolge nachschlagen möchten, sollten Sie Ihren Code als solchen ändern:

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"

da es sich jedoch um eine CSV-Datei handelt, können Sie erwarten, dass sich der Benutzername in einer bestimmten Spalte befindet:

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

Sie sollten sich das csv-Modul in Python ansehen.

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

Es wird davon ausgegangen, dass Ihr Trennzeichen ein Komma ist (ersetzen Sie es durch Ihr Trennzeichen. Beachten Sie, dass der Benutzername zuvor definiert werden muss. Ändern Sie auch den Namen der Datei .) Der Code durchläuft alle Zeilen in der CSV-Datei Zeichenfolge, die jedes Element Ihrer Zeile enthält: Wenn Sie beispielsweise Folgendes in Ihrer CSV-Datei haben: Joe,Peter,Michel ist die Zeile ['Joe', 'Peter', 'Michel']. Dann können Sie überprüfen, ob Ihr Benutzername in dieser Liste enthalten ist.

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