Python 尝试在csv文件中搜索项目
因此,当我运行此程序时,它会将第[0]行打印为“username”,但是,当它将第[0]行与变量username进行比较时,它会返回false,它们看起来是相同的,并且此代码在我运行的其他程序中工作过,所以为什么它在这里不工作?类似的比较问题通常是由格式或间距差异引起的 你自己解决这个问题最简单的方法就是使用可爱的函数 我刚刚写了一个例子:Python 尝试在csv文件中搜索项目,python,csv,Python,Csv,因此,当我运行此程序时,它会将第[0]行打印为“username”,但是,当它将第[0]行与变量username进行比较时,它会返回false,它们看起来是相同的,并且此代码在我运行的其他程序中工作过,所以为什么它在这里不工作?类似的比较问题通常是由格式或间距差异引起的 你自己解决这个问题最简单的方法就是使用可爱的函数 我刚刚写了一个例子: def dataFinder(username): readData = csv.reader(open("patient_data.csv", "
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)
输出为:
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])))
现在很明显,第一行不匹配,因为我有一个额外的空格和一个不可打印的块字符,第二行根本不匹配。将此检查添加到脚本中,您可以修复数据源。无需担心,忘记了csv。reader将第一行视为字段名,因此跳过它。您可以提供csv文件吗?或者它的一部分?你的csv真的以“用户名”开头吗?是否有csv阅读器无法解析的奇怪BOM?您使用的是哪种版本的Python?
[GCC 6.3.0 20170516] on linux
' fusername'
+ + + f u s e r n a m e
' matt'
+ + m- u- s- e- r- n a- m- e+ t+ t