我有一个动物列表如下
animals = ['pets','dog\ncat\nchicken\ncow\n','wild','tiger\nlion\nrhino\n']
我只想要一个单独的宠物列表
pets = animals[1].split('\n')
print(pets) 输出 ['dog', 'cat', 'chicken', 'cow', ''] 宠物列表的最后一个元素,即“”是不受欢迎的
下面的代码行从列表 pets 中删除了 '' 元素
pets = [i for i in animals[1].split('\n') if i]
您能否解释一下为什么之前的解决方案会在列表中插入 ''。另外,请澄清后一种解决方案中的列表理解内部发生了什么? “如果我”代表什么?
最佳答案
因为在字符串的开头和结尾(以及所有字符之间)总是有一个空字符串:
>>> s='example'
>>> s.replace('','*')
'*e*x*a*m*p*l*e*'
在这种情况下,您在尾部有一个换行符(实际上在尾随空字符串之前),所以在拆分之后您将得到一个拆分的空字符串!
>>> s='dog\ncat\nchicken\ncow\n'
^ #here is the empty string
>>> s.split('\n')
['dog', 'cat', 'chicken', 'cow', '']
关于python - 为什么 string.split ('\n' ) 在输出列表中添加一个额外的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31228313/