Python 2.7 为什么在python中拆分时,拆分会提供额外的空字符串?

Python 2.7 为什么在python中拆分时,拆分会提供额外的空字符串?,python-2.7,split,Python 2.7,Split,用例子来证明我的怀疑 example = "$2000" example.split("$") ['', '2000'] 但如果我这样做了 example2 = "2000$3000" example2.split("$") ['2000', '3000'] 为什么本例中没有多余的空字符串? split在幕后是如何工作的?来自文档: It(函数的参数)指定要用作单词分隔符的字符串。返回的列表将比字符串中分隔符的非重叠出现次数多出一项。 在您的示例中,分隔符的出现次数为1。 因此,s

用例子来证明我的怀疑

example = "$2000"  
example.split("$")  
['', '2000']
但如果我这样做了

example2 = "2000$3000"
example2.split("$")
['2000', '3000'] 
为什么本例中没有多余的空字符串?
split在幕后是如何工作的?

来自文档:

It(函数的参数)指定要用作单词分隔符的字符串。返回的列表将比字符串中分隔符的非重叠出现次数多出一项。

在您的示例中,分隔符的出现次数为1。 因此,
split
将返回2个元素。第一个元素必须是空字符串,因为在分隔符之前没有任何内容

第二个示例在返回的结果中没有空字符串,因为
2000
位于分隔符
$
之前

您可以将
split
函数视为在任何分隔符出现的位置将字符串分割成数组元素。

来自文档:

It(函数的参数)指定要用作单词分隔符的字符串。返回的列表将比字符串中分隔符的非重叠出现次数多出一项。

在您的示例中,分隔符的出现次数为1。 因此,
split
将返回2个元素。第一个元素必须是空字符串,因为在分隔符之前没有任何内容

第二个示例在返回的结果中没有空字符串,因为
2000
位于分隔符
$
之前

您可以将
split
函数视为在任何分隔符出现的位置将字符串分割成数组元素。

来自文档:

It(函数的参数)指定要用作单词分隔符的字符串。返回的列表将比字符串中分隔符的非重叠出现次数多出一项。

在您的示例中,分隔符的出现次数为1。 因此,
split
将返回2个元素。第一个元素必须是空字符串,因为在分隔符之前没有任何内容

第二个示例在返回的结果中没有空字符串,因为
2000
位于分隔符
$
之前

您可以将
split
函数视为在任何分隔符出现的位置将字符串分割成数组元素。

来自文档:

It(函数的参数)指定要用作单词分隔符的字符串。返回的列表将比字符串中分隔符的非重叠出现次数多出一项。

在您的示例中,分隔符的出现次数为1。 因此,
split
将返回2个元素。第一个元素必须是空字符串,因为在分隔符之前没有任何内容

第二个示例在返回的结果中没有空字符串,因为
2000
位于分隔符
$
之前

您可以将
split
函数视为在任何分隔符出现的位置将字符串分割为数组元素。

因为您使用分隔符进行分割。如果使用
$
分隔符拆分字符串
$2000
,则左侧有一个空字符串,右侧有一个
2000

            $2000
nothing____/ \____2000
对于第二种情况,即
2000$3000
,仍然只有一个分隔符,因此它仍然在数组中生成两个值。只是分隔符左边的值是
2000
,而不是空字符串:

     2000$3000
2000____/ \____3000
如果不通过指定允许的最大拆分数来限制
拆分
,则生成的数组大小应始终比分隔符数多一个

如果要从结果集合中删除所有空字符串,可以使用列表理解(下面的第三段)执行此操作:

>>> 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']
因为你用分隔符分开。如果使用
$
分隔符拆分字符串
$2000
,则左侧有一个空字符串,右侧有一个
2000

            $2000
nothing____/ \____2000
对于第二种情况,即
2000$3000
,仍然只有一个分隔符,因此它仍然在数组中生成两个值。只是分隔符左边的值是
2000
,而不是空字符串:

     2000$3000
2000____/ \____3000
如果不通过指定允许的最大拆分数来限制
拆分
,则生成的数组大小应始终比分隔符数多一个

如果要从结果集合中删除所有空字符串,可以使用列表理解(下面的第三段)执行此操作:

>>> 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']
因为你用分隔符分开。如果使用
$
分隔符拆分字符串
$2000
,则左侧有一个空字符串,右侧有一个
2000

            $2000
nothing____/ \____2000
对于第二种情况,即
2000$3000
,仍然只有一个分隔符,因此它仍然在数组中生成两个值。只是分隔符左边的值是
2000
,而不是空字符串:

     2000$3000
2000____/ \____3000
如果不通过指定允许的最大拆分数来限制
拆分
,则生成的数组大小应始终比分隔符数多一个

如果要从结果集合中删除所有空字符串,可以使用列表理解(下面的第三段)执行此操作:

>>> 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']
因为你用分隔符分开。如果使用
$
分隔符拆分字符串
$2000
,则左侧有一个空字符串,右侧有一个
2000

            $2000
nothing____/ \____2000
第二个案例是2000美元3000美元的性传播感染