尝试在csv文件中搜索项目

时间:2019-10-02 20:08:31

标签: python 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)

因此,当我运行它时,它将行[0]打印为“用户名”,但是,当将行[0]与变量用户名进行比较时,它返回false,它们看起来相同,并且此代码在我运行的其他程序中也有效那为什么在这里不起作用?

2 个答案:

答案 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会将第一行视为字段名称,因此将其跳过。