python - 为什么 string.split ('\n' ) 在输出列表中添加一个额外的元素?

标签 python list split

我有一个动物列表如下

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/

相关文章:

python - 给定位置看到的唯一单词的累计数量的有序计数

python - 如何在 Python 中组织在负值和正值之间交替的数据

javascript - 根据对象中的值将对象数组拆分为两个

python - 在python中组合多个连续的单词

python - 将列表中的值附加到列表

vb.net - 有没有一种简单的方法可以在 VB.NET 中随机化列表?

sql - SQL Server 2012中的STRING_SPLIT

python - 在 Python 中按位置有效地对坐标点列表进行分组

javascript - django ajax请求获取选定的索引

python - 我们如何将整列的内容拆分为同一个表中的单独列?