AttributeError: - 'list'对象没有属性'startswith'在Django视图中: -

时间:2017-06-18 12:14:57

标签: python django-views

AttributeError: - 'list'对象没有属性'startswith'在Django视图中: -

def index(request):
    value = []
    path = os.path.join(BASE_DIR,'accessfiles/media/images/GSE2035_series_matrix.txt')
    with open(path, 'r', encoding = "utf-8") as file:
        file = csv.reader(file, delimiter='\t')
        for line in file:
            if line.startswith("!Series_relation"):
                value = line[1]


        args = {'file':value}
        return render(request, 'index.html', args) 

2 个答案:

答案 0 :(得分:2)

为字符串对象定义了startswith()方法。在这种情况下,您可以在行变量上调用它,这是一个列表对象(如错误所示)。

当读取csv文件时,它会将每一行拆分为一个值列表,在这种情况下是由原始文件中的制表符分隔的值。

如果你想确保该行以例如“start”开头,你应该写:

line[0].startswith("start")

因为行列表的第一个元素是字符串。

答案 1 :(得分:0)

csv.reader返回一个包含列表的迭代器,每个列表代表由提供的分隔符拆分的文件中的一行(可以从您收到的错误中推断出来)。 尝试在print(line)声明之前添加if

要使代码生效,您需要将if line.startswith(...)修改为if line[0].startswith(...)