从Python列表中移除'\n'项
我有一个列表,里面有一个项是'\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