def dataFinder(username):
readData = csv.reader(open("patient_data.csv", "r"))
for row in readData:
print(row[0])
if row[0] == username:
print("True")
break
else:
print("False")
username = "username"
dataFinder(username)
因此,当我运行它时,它将行[0]打印为“用户名”,但是,当将行[0]与变量用户名进行比较时,它返回false,它们看起来相同,并且此代码在我运行的其他程序中也有效那为什么在这里不起作用?
答案 0 :(得分:0)
通常这样的比较问题是由格式或间距差异引起的。
为您自己解决此问题的最简单方法是使用可爱的difflib.ndiff函数。
我刚刚写了一个例子:
A 0 $50,000 1
A $50,001 $100,000 2
A $100,001 $250,000 3
B 0 $50,000 4
B $50,001 $100,000 5
B $100,001 $250,000 6
C 0 $50,000 7
C $50,001 $100,000 8
C $100,001 $250,000 9
输出为:
import csv
import io
import difflib
CSV_FILE=u' \uefeffusername,password\r\n matt,hunter2'
data = csv.reader(io.StringIO(CSV_FILE))
username = "username"
for row in data:
print ("'" + row[0] + "'")
print("".join(difflib.ndiff(username, row[0])))
现在很明显第一行不匹配,因为我有一个多余的空格和一个无法打印的块字符,第二行根本不匹配。将此检查添加到脚本中,即可修复数据源。
答案 1 :(得分:0)
没关系,忘记的csv.reader会将第一行视为字段名称,因此将其跳过。