python split,为什么我没有看到输出中的所有连字符 输出

python split,为什么我没有看到输出中的所有连字符 输出,python,python-3.x,Python,Python 3.x,我假设空列表项(“”)是连字符。我的问题是,为什么a和b之间的输入中只有两个“”而不是三个 这是默认的split()函数操作 所以基本上如果你把两个角色分开,你总是得到x- 使用指定的分隔符拆分空字符串将返回[“”] 这是默认的split()函数操作 所以基本上如果你把两个角色分开,你总是得到x- 使用指定的分隔符拆分空字符串将返回[“”] 让我们用一些字符串替换空字段: ['', '', '', '', 'a', '', '', 'b', '', 'c', 'd'] test_string=

我假设空列表项(“”)是连字符。我的问题是,为什么a和b之间的输入中只有两个“”而不是三个

这是默认的split()函数操作

所以基本上如果你把两个角色分开,你总是得到x-

使用指定的分隔符拆分空字符串将返回[“”]

这是默认的split()函数操作

所以基本上如果你把两个角色分开,你总是得到x-

使用指定的分隔符拆分空字符串将返回[“”]


让我们用一些字符串替换空字段:

['', '', '', '', 'a', '', '', 'b', '', 'c', 'd']
test_string='--a--b--c-d'
现在您可以清楚地看到字段的位置


您可以看到
a
b
之间只有两个字段。特殊情况是在字符串的开头,开头的空字符串也被视为一个字段。

让我们用一些字符串替换空字段:

['', '', '', '', 'a', '', '', 'b', '', 'c', 'd']
test_string='--a--b--c-d'
现在您可以清楚地看到字段的位置


您可以看到
a
b
之间只有两个字段。特殊情况是在字符串的开头,开头的空字符串也被视为一个字段。

str.split
将其参数用作分隔符,因此不会将其包含在返回的列表中

使用
re.split(r'-',test_string)
时也是如此,除非将模式放在括号中。因此,如果在拆分字符串时确实希望保留
-
,我建议您执行以下操作:

test_string = '<field>-<field>-<field>-<field>-a-<field>-<field>-b-<field>-c-d'
这将打印出:

test_string = '----a---b--c-d'

import re
a = re.split(r'(-)', test_string)
print(a)
test_string = 'cat-dog-bird'

import re
a = re.split(r'(-)', test_string)
print(a)
如果您想知道为什么这个输出中有很多空字符串,那是因为
re.split
将保留
-
字符之间的任何内容,即使它们是长度为零的字符串

一个简短的例子可能有助于理解发生了什么:

['', '-', '', '-', '', '-', '', '-', 'a', '-', '', '-', '', '-', 'b', '-', '', '-', 'c', '-', 'd']
这将打印出:

test_string = '----a---b--c-d'

import re
a = re.split(r'(-)', test_string)
print(a)
test_string = 'cat-dog-bird'

import re
a = re.split(r'(-)', test_string)
print(a)
如果不需要
-
字符,请从
r'(-)
中删除括号。也就是说,将
r'(-)
更改为
r'-'
,或者只使用:

['cat', '-', 'dog', '-', 'bird']

str.split
将其参数用作分隔符,因此不会将其包含在返回的列表中

使用
re.split(r'-',test_string)
时也是如此,除非将模式放在括号中。因此,如果在拆分字符串时确实希望保留
-
,我建议您执行以下操作:

test_string = '<field>-<field>-<field>-<field>-a-<field>-<field>-b-<field>-c-d'
这将打印出:

test_string = '----a---b--c-d'

import re
a = re.split(r'(-)', test_string)
print(a)
test_string = 'cat-dog-bird'

import re
a = re.split(r'(-)', test_string)
print(a)
如果您想知道为什么这个输出中有很多空字符串,那是因为
re.split
将保留
-
字符之间的任何内容,即使它们是长度为零的字符串

一个简短的例子可能有助于理解发生了什么:

['', '-', '', '-', '', '-', '', '-', 'a', '-', '', '-', '', '-', 'b', '-', '', '-', 'c', '-', 'd']
这将打印出:

test_string = '----a---b--c-d'

import re
a = re.split(r'(-)', test_string)
print(a)
test_string = 'cat-dog-bird'

import re
a = re.split(r'(-)', test_string)
print(a)
如果不需要
-
字符,请从
r'(-)
中删除括号。也就是说,将
r'(-)
更改为
r'-'
,或者只使用:

['cat', '-', 'dog', '-', 'bird']

Python2文档的完整复制和粘贴本可以在注释中链接——除此之外,这是一个Python3问题。为什么要复制文档?关于python2,你有一个观点,在答案的顶部也有一些解释。完整复制和粘贴python2文档,可以在注释中链接-除此之外,还有一个Python3问题。为什么要复制文档?关于python2,你有一个观点,在答案的顶部也有一些解释。