从列表中剥离\ n不会工作

时间:2013-10-23 00:02:41

标签: python

我在

中创建了一个带有这些数字的文件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部分....

2 个答案:

答案 0 :(得分: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方法返回字符串的副本,而不是列表。

答案 1 :(得分:1)

你的my_list是一个字符串列表列表 - 更清楚,它是一个行列表,每列都是一列,每列都是一个字符串。

因此,element中的每个my_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]

但值得注意的是,如果你从未在循环中使用,那么每次通过循环重新分配columnelement变量都不会有多大好处。您的原始代码有同样的问题。如果您正在尝试更改my_list,则不是这样做的方式(无论如何,您可能实际上并不想这样做。)

同时,正如iCodez指出的那样,你可能想要在这里剥离每一列,只是最后一列...你可以通过在分割之前剥去线来轻松地做到这一点,使代码更简单。