我是一个相对较新的程序员,对 .csv 文件没有太多经验。 我的文件如下所示:
hugþekkur;181038;lo;alm;hugþekkur;FSB-KK-NFET
hugþekkur;181038;lo;alm;hugþekks;FSB-KK-EFET
hugþekkur;181038;lo;alm;hugþekkir;FSB-KK-NFFT
hugþekkur;181038;lo;alm;hugþekkra;FSB-KK-EFFT
我想根据我已有的搜索条件来搜索正确的行。 我的代码如下所示:
import csv
reader = csv.reader(database, delimiter=';')
for split in reader:
if (error_word == split[4]) and (wrong_mark in split[5]) and (number_mark in split[5]) and (infl_mark in split[5]) and (pos_mark == split[2]):
idnumber = split[1]
if (idnumber == split[1]) and (gender_mark in split[5]) and
(number_mark in split[5]) and (infl_mark in split[5]):
return split[4]
出于某种原因,当我这样搜索时,它不会返回我所期望的结果。例如,
如果 idnumber = 181038、gender_mark = "KK"、number_mark = "NFET"且 infl_mark = "FSB"
,
它应该在此处返回第一行。事实并非如此。另外,当我跳过一个搜索条件时,我会得到结果,但缺少一些行,包括我想要的行。我到底在寻找什么似乎并不重要,我找不到它。 这些对你来说有意义吗?任何帮助将不胜感激。
最佳答案
最大的问题可能是 idnumber 匹配。如果你的变量 idnumber 是一个 int (就像我从字面上读你的“For example”行一样),那么这将与字符串不匹配: 181038 == '181038'
计算结果为 错误
。你可以在 Perl 中做这样的事情,但不能在 Python 中做。在 Python 中,int(idnumber)==int(split[1])
会更可靠。
关于Python:在csv中查找正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20255786/