拆下一个'\n';python列表中的列表项
我有一个列表,其中包含一项“\n”。 我想把它去掉。但是,remove命令不适用于它。谁能告诉我我做错了什么拆下一个'\n';python列表中的列表项,python,list,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() 此外,如果我的列表包含许多这样的条目“\
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”,请将其删除。它在这里起作用:
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()
请在此处尝试:这将删除所有内容:
list1=filter(lambda x: x != '\n', list1)
从列表中删除内容是列表理解的许多用途之一:
no_n = [x for x in list1 if x != '\n']
# to change the original list
list1[:] = no_n
remove
方法修改列表并返回None
。因此,当您使用print list1.remove('\n')
时,会修改列表,但会打印None
。而是分两步进行:
list1.remove('\n')
print list1
要删除所有引用,最自然的做法是在排除换行符的同时构建一个新列表。例如:
list2 = [a for a in list1 if a != '\n']
如果出于某种原因必须将其放置到位,则重复使用list1。删除,直到引发异常:
while True:
try:
list1.remove('\n')
except ValueError:
break
只是补充一句;当我尝试搜索所有为“\n”的元素时,我的代码再次无法工作<代码>列表1=['\ng,g\ng,g,g\n','\n','\ns\ns,s\n','\nd,d\nd\nd,d,d\n\n']打印列表1中xx的列表1:如果xx='\n':打印xx
谢谢。真不敢相信我在这么一个小错误上浪费了这么多时间。我认为这是因为“\n”是一个空格,现在正在阅读正则表达式教程-_-您的解决方案将删除每个\n,但OP似乎只要求删除仅为“\n”的列表元素。
while True:
try:
list1.remove('\n')
except ValueError:
break