用例子证明我的怀疑
example = "$2000"
example.split("$")
['', '2000']
但如果我这样做
example2 = "2000$3000"
example2.split("$")
['2000', '3000']
为什么在这个例子中没有多余的空字符串?
如何分裂在幕后工作?
答案 0 :(得分:2)
因为您在分隔符上拆分。如果您将字符串$2000
与$
分隔符拆分,则左侧有一个空字符串2000
在右边:
$2000
nothing____/ \____2000
对于2000$3000
的第二种情况,仍然只有一个分隔符,因此它仍然在数组中生成两个值。只是分隔符剩下的值是2000
而不是空字符串:
2000$3000
2000____/ \____3000
如果您没有通过指定允许的最大拆分数来限制split
,则生成的数组大小应始终比分隔符的数量多一个。
如果要从结果集合中删除所有空字符串,可以使用列表推导来完成,第三部分如下:
>>> s = '$$$1000$$2000$3000$$$' # test data
>>> [x for x in s.split('$') if x != ''] # remove all empty strings
['1000', '2000', '3000']
还有其他一些方法可以摆脱最终的空白,无论是一个还是全部:
>>> import re
>>> s='$$$1000$$2000$3000$$$'
>>> re.sub('^\$|\$$','',s).split('$') # just one
['', '', '1000', '', '2000', '3000', '', '']
>>> re.sub('^\$*|\$*$','',s).split('$') # all at the ends
['1000', '', '2000', '3000']
答案 1 :(得分:1)
来自文档:https://docs.python.org/2/library/string.html
It (the argument to the function) specifies a string to be used as the word separator. The returned list will then have one more item than the number of non-overlapping occurrences of the separator in the string.
示例中分隔符的出现次数为1。
因此split
将返回2个元素。第一个元素必须是空字符串,因为在分隔符之前没有任何内容。
您的第二个示例在返回的结果中没有空字符串,因为2000
位于分隔符$
之前。
您可以将split
函数视为在字符串发生的任何地方将字符串切换为数组元素。