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美元的性传播感染