0

我创建了一个文件 Alpha.txt,里面有这些数字

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 部分....

4

2 回答 2

4

The .split method of a string always returns a list:

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

Thus, the items in my_list will be lists.

Perhaps you should try this:

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

Unlike the .split method, the .strip one returns a copy of the string, not a list.

于 2013-10-23T00:04:21.330 回答
1

my_list是一个字符串列表的列表——更清楚地说,它是一个行列表,每个行都是一个列列表,每个列都是一个字符串。

因此,每个elementinmy_list都是一行 - 一个列列表。

您不能删除列表,只能删除字符串。如果要删除一行中的所有列,则必须明确执行此操作:

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

或者,如果您愿意:

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

但值得注意的是,如果您从不在循环中使用column它,那么每次通过循环重新分配该变量或element变量不会有多大好处。您的原始代码有同样的问题。如果您尝试就地更改,这不是这样做的方法(而且您可能实际上并不想这样做)。my_list

同时,正如 iCodez 指出的那样,您可能不想在这里删除每一列,只删除最后一列……您可以通过在拆分之前删除行来轻松地做到这一点,这使得代码更简单。

于 2013-10-23T00:09:10.357 回答