2017-09-18 59 views
1

我對Python仍然很陌生,但是將它用於我的語言學研究。列表中的飼料類

所以我做了一些研究,地名,我接到了一個地形機構輸入數據的列表,它看起來像下面這樣: Official_Name,標籤,Dialect_Name,標籤,Administrative_district,Topographic_district,Y_coordinates,X_coordinates,經度,緯度。

所以,我定義的類:

class MacroTop: 
     def __init__(self, Official_Name, Dialect_Name, Adm_District, Topo_District, Y, X, Long, Lat): 
      self.Official_Name = Official_Name 
      self.Dialect_Name = Dialect_Name 
      self.Adm_District = Adm_District 
      self.Topo_District = Topo_District 
      self.Y = Y 
      self.X = X 
      self.Long = Long 
      self.Lat = Lat 

所以,用open(),我想加載我.txt文件,我必須把它讀成使用循環類的數據,但沒有奏效。

我想要的結果是能夠訪問該類的一個功能,比如Dialect_Name,並且能夠查看該功能的所有條目。我可以在循環中做到這一點,但我想定義一個類,以便以後可以做更多的操作。

我的循環:

with open("locLuxAll.txt", "r") as topo_list: 
    lines = topo_list.readlines() 
    for line in lines: 
     line = line.split('\t') 
     print(line) 
     print(line[0]) # This would access all the data that is characterized as Official_Name 

我試圖讓另一個循環:

for i in range(0-len(lines)): 
     lines[i] = MacroTop(str(line[0]), str(line[1]), str(line[2]), str(line[3]), str(line[4]), str(line[5]), str(line[6]), str(line[7])) 

但是,這似乎並沒有工作。

回答

0

此行失敗:

for i in range(0-len(lines)): 

你試圖通過負數我猜循環,因此輸出將是一個空列表。

In [11]: [i for i in range(-200)] 
Out[11]: [] 

編輯: 您的代碼不可讀似乎對我來說,你有for i in range(len(lines))但在這for循環,你通過line迭代變量,它在哪裏的?首先,我不會寫回lines列表,因爲它來自readlines。爲此創建新的列表,並且您不需要i變量,那些行將按順序保存。

class_lines = [] 
for line in lines: 
    class_lines.append(MacroTop(str(line[0]), str(line[1]), str(line[2]), str(line[3]), str(line[4]), str(line[5]), str(line[6]), str(line[7]))) 

甚至與列表理解:

class_lines = [MacroTop(str(line[0]), str(line[1]), str(line[2]), str(line[3]), str(
    line[4]), str(line[5]), str(line[6]), str(line[7])) for line in lines] 
+0

哦,我看到有錯誤。將其更改爲範圍(len(lines))但是,輸出結果並不是我想要的,因爲該類沒有被數據提供,還有更多想法嗎? – MSam

+0

@MSam你的初始代碼存在邏輯錯誤,但請檢查我的更新的答案,如果有幫助 – Pythonist

+0

Mybe我應該糾正我的初步搜索,我想我沒有很好地表達 – MSam