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

Ris*_*ran 3 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()
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*ber 6

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

list1.remove('\n')
print list1
Run Code Online (Sandbox Code Playgroud)

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

list2 = [a for a in list1 if a != '\n']
Run Code Online (Sandbox Code Playgroud)

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

while True:
    try:
        list1.remove('\n')
    except ValueError:
        break
Run Code Online (Sandbox Code Playgroud)


Kar*_*ath 5

这将删除所有这些:

list1=filter(lambda x: x != '\n', list1)
Run Code Online (Sandbox Code Playgroud)