2017-06-18 42 views
-2

AttributeError的: - '名單' 對象有沒有屬性 'startswith' 在Django的看法: -AttributeError的: - '名單' 對象有沒有屬性 '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) 
+0

'csv.reader()'返回列的列表。也不要將兩個不同的對象分配給名爲'file'的var。 – phd

回答

0

startswith()方法是爲字符串對象定義的。在這種情況下,你可以在行變量中調用它,這是一個列表對象(如錯誤所示)。

讀取csv文件時,它會將每行分割爲一個值列表,在這種情況下,這些值由原始文件中的製表符分隔。

如果你想確保符合例如開始「啓動」你應該寫:

line[0].startswith("start") 

因爲線路列表的第一個元素將是一個字符串。

0

csv.reader返回迭代其中包含列表,每個列表表示由提供的分隔符分隔的文件中的一行(可從您正在接收的錯誤中推斷出)。 嘗試在if聲明前添加print(line)

爲了您的代碼正常工作,您需要修改if line.startswith(...)if line[0].startswith(...)

相關問題