我在
中创建了一个带有这些数字的文件Alpha.txt1.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部分....
答案 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]
但值得注意的是,如果你从未在循环中使用,那么每次通过循环重新分配column
或element
变量都不会有多大好处。您的原始代码有同样的问题。如果您正在尝试更改my_list
,则不是这样做的方式(无论如何,您可能实际上并不想这样做。)
同时,正如iCodez指出的那样,你可能不想要在这里剥离每一列,只是最后一列...你可以通过在分割之前剥去线来轻松地做到这一点,使代码更简单。