Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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 对于回路can';在csv文件中找不到值_Python_Python 3.x_Csv - Fatal编程技术网

Python 对于回路can';在csv文件中找不到值

Python 对于回路can';在csv文件中找不到值,python,python-3.x,csv,Python,Python 3.x,Csv,我试图解决cs50课程中的dna问题,为了解决这个问题,我制作了一个小规模的版本,其中我制作了一个值,程序会在csv文件中搜索该值,但由于某种原因它找不到它 代码如下: import csv f = open("small.csv") csv_f = list(csv.reader(f)) length=len(csv_f) target=4 for a in range(length): for j in range(length): if cs

我试图解决cs50课程中的dna问题,为了解决这个问题,我制作了一个小规模的版本,其中我制作了一个值,程序会在csv文件中搜索该值,但由于某种原因它找不到它

代码如下:

import csv

f = open("small.csv")
csv_f = list(csv.reader(f))
length=len(csv_f)

target=4
for a in range(length):
    for j in range(length):
        if csv_f[a][j]==target:
            print("found")
我甚至尝试在范围内使用j(长度-1):并通过target=“4”将target设置为字符串,但仍然不起作用。请有人帮我试试这个尺寸

您不需要显式地在长度范围内迭代,python的迭代器语法只允许您对行列表中的每行执行一次for,然后对每行执行一个值

csv\u行=列表(csv.reader(f))
对于csv_行中的行:
对于行中的值:
如果值==目标值:
打印(“找到”)

除非文件的字段数与行数相同(这将是难以置信的巧合),否则不应使用
长度作为内部循环的限制。它应该使用行的长度作为限制,而不是行的数量,即范围内j的
(len(csv\u f[a]):

但是使用
range()
循环列表是不和谐的。只需对列表中的变量使用

for row in csv_f:
    for cell in row:
        if cell == target:
            print("found"):
您还可以通过使用内置的
any()
函数和
in
运算符进一步简化此操作:

if any(target in row for row in csv_f):
    print("found")
另一个问题是
csv.reader()
将所有字段作为字符串返回。所以你的目标应该是一个字符串,而不是一个数字

target = '4'

这是因为CSV文件中的值是字符串。您试图计算的对象ie
target
是一个整数值
4


因此,将
target=4
更改为
target=“4”

可以在
small.csv
中发布数据示例吗?为什么要使用
range(length)
作为行的长度?为什么要将字符串与整数进行比较?读取的数据以字符串形式出现在列表列表中,,,与inter进行比较总是错误的。由于您声明您也尝试了
“4”
,我希望@Barmar为您提出了正确的问题。将一个维度用于两个维度是不正确的。只有当您引用的CSV文件是“方形”时,这才有意义。查看CSV可能会有所帮助,但即使没有它,由于逻辑似乎合理,我认为您可能会“迷失”,因为CSV不是“方形”