从Python列表中移除'\n'项

3 投票
5 回答
13086 浏览
提问于 2025-04-17 01:47

我有一个列表,里面有一个项是'\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 个回答

3

从列表中删除东西是列表推导式的众多用途之一:

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

这段代码会把它们全部删除:

list1=filter(lambda x: x != '\n', list1)
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

撰写回答