从python列表中删除'\ n'列表项

时间:2011-09-08 11:06:16

标签: python list

我有一个包含项目'\ n'的列表。 我想删除它。但是,remove命令不起作用。谁能告诉我我做错了什么?

def main():
    list1 = ['\ng,g\ng,g,g\n', '\n', '\ns\ns,s\n', '\nd,d\nd\nd,d,d,d\n\n']
    print list1

    print list1.remove('\n')


if __name__ == '__main__':
    main()

另外,如果我的列表包含许多此类条目'\ n',我该如何删除它们?我目前使用set()来获取重复项,然后我试图让remove命令工作。但是,set()命令似乎改变了列表的排序。我宁愿遍历列表并找到'\ n',找到它,删除它。

5 个答案:

答案 0 :(得分:6)

remove方法就地修改列表并返回None。因此,当您使用print list1.remove('\n')时,列表会被修改,但会打印None。分两步完成:

list1.remove('\n')
print list1

要删除所有匹配项,最自然的是构建新列表,同时排除换行符。例如:

list2 = [a for a in list1 if a != '\n']

如果由于某种原因必须就地,则重复使用list1.remove直到出现异常:

while True:
    try:
        list1.remove('\n')
    except ValueError:
        break

答案 1 :(得分:5)

这将删除所有这些:

list1=filter(lambda x: x != '\n', list1)

答案 2 :(得分:3)

从列表中删除内容是列表推导的众多用途之一:

no_n = [x for x in list1 if x != '\n']
# to change the original list
list1[:] = no_n

答案 3 :(得分:0)

它在这里工作:

def main():
    list1 = ['\ng,g\ng,g,g\n', '\n', '\ns\ns,s\n', '\nd,d\nd\nd,d,d,d\n\n']
    print list1
    list1.remove('\n')
    print list1


if __name__ == '__main__':
    main()

在此处试试:http://codepad.org/YXHOHgwv

答案 4 :(得分:0)

list1 = ['\ng,g\ng,g,g\n', '\n', '\ns\ns,s\n', '\nd,d\nd\nd,d,d,d\n\n']
list2 = []

list2 = [el.replace('\n', '') for el in list1]

print list2
   >>> 
['g,gg,g,g', '', 'ss,s', 'd,ddd,d,d,d']