2013-10-23 54 views
0

我已經創建了這些數字文件Alpha.txt內剝離 n不會工作

1.2, 4.3, 7,0 
3, 5, 8.2,9 
4, 3, 8,5.6 
8, 4, 3,7.4 

每次我試圖剝離/ N使這些成列表時創建的,我返回該錯誤。

AttributeError: 'list' object has no attribute 'strip' 

我知道這個問題已經被問過,但出於某種原因,我不能讓我的代碼與所有的解決方案已經在網上工作。對不起,重複一遍。

這裏是我的代碼

def main(): 
    my_list = [line.split(',') for line in open("Alpha.txt")] 
    print(my_list) 
    for element in my_list: 
     element = element.strip() 
    print(element) 

main() 

去除for element in my_list上下,我得到這樣的輸出:

[['1.2', ' 4.3', ' 7', '0\n'], ['3', ' 5', ' 8.2', '9\n'], 
['4', ' 3', ' 8', '5.6\n'], ['8', ' 4', ' 3', '7.4\n']] 

這是偉大的,減去\ n部分....

+1

附註:'/ n'是兩個字符,正斜槓後跟一個字母。 '\ n'是一個字符,換行符。如果你把它們混在一起,你會遇到很多問題。 – abarnert

回答

4

字符串的.split方法總是返回一個列表:

>>> "a b c d e".split() 
['a', 'b', 'c', 'd', 'e'] 
>>> 

因此,my_list中的項目將成爲列表。

也許你應該試試這個:

my_list = [line.strip().split(',') for line in open("Alpha.txt")] 

不像.split法,.strip一個返回字符串,而不是一個列表的副本。

+0

ahhh非常感謝,我沒有意識到,我可以結合帶和分裂像那樣。 – user2840144

+0

@ user2840144 - 高興地幫忙!不要忘記接受答案。 – iCodez

1

您的my_list是一個字符串列表清單 - 更清楚地說明,它是一個行列表,每個列表是一列列表,每個列表是一個字符串。

因此,my_list中的每個element都是一行 - 一列列表。

您不能剝離一個列表,只有一個字符串。如果你想在一排剝離所有列,你必須做明確:

for element in my_list: 
    for column in element: 
     column = column.strip() 

或者,如果你喜歡:

for element in my_list: 
    element = [column.strip() for column in element] 

但值得注意的是,只是重新分配該columnelement每次通過循環變量將不會做太多的好處,如果你從來沒有使用它在循環內。你原來的代碼有同樣的問題。如果你試圖改變my_list,這不是實現它的方法(反正你可能實際上並不想這麼做)。同時,正如iCodez指出的那樣,你可能不要想要在這裏去掉每一列,只是最後一列......你可以通過在拆分線之前剝離線來輕鬆完成,這使得更簡單碼。

+0

謝謝!這是一個非常好的細分 – user2840144