I have a list which contains an item '\n' in it.
I want to remove it. however, the remove command is not working for it. Can anyone tell me what I am doing wrong?
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()
Also, if my list were to contain many such entries '\n', how do I remove them all? I currently use set() to get the duplicates and then am trying to get the remove command to work. However, the set() command seems to change the sorting of the list. I'd rather iterate through the list and incase a '\n' is found, remove it.
解决方案
The remove method modifies the list in-place and returns None. Thus, when you use print list1.remove('\n'), the list is modified, but None is printed. Do it in two steps, instead:
list1.remove('\n')
print list1
To remove all occurrences, most natural would be to construct a new list while excluding the newlines. For example:
list2 = [a for a in list1 if a != '\n']
If it must be in-place for some reason, then repeatedly use list1.remove until an exception is raised:
while True:
try:
list1.remove('\n')
except ValueError:
break