Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试在csv文件中搜索项目_Python_Csv - Fatal编程技术网

Python 尝试在csv文件中搜索项目

Python 尝试在csv文件中搜索项目,python,csv,Python,Csv,因此,当我运行此程序时,它会将第[0]行打印为“username”,但是,当它将第[0]行与变量username进行比较时,它会返回false,它们看起来是相同的,并且此代码在我运行的其他程序中工作过,所以为什么它在这里不工作?类似的比较问题通常是由格式或间距差异引起的 你自己解决这个问题最简单的方法就是使用可爱的函数 我刚刚写了一个例子: def dataFinder(username): readData = csv.reader(open("patient_data.csv", "

因此,当我运行此程序时,它会将第[0]行打印为“username”,但是,当它将第[0]行与变量username进行比较时,它会返回false,它们看起来是相同的,并且此代码在我运行的其他程序中工作过,所以为什么它在这里不工作?

类似的比较问题通常是由格式或间距差异引起的

你自己解决这个问题最简单的方法就是使用可爱的函数

我刚刚写了一个例子:

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
