鱼C论坛

 找回密码
 立即注册
查看: 2336|回复: 6

[已解决]split()方法有点不理解

[复制链接]
发表于 2023-4-26 01:52:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
以下三个示例的区别在于love和coding之间的空格数

>>> coding_journey = "I love coding" # 一个空格
>>> coding_journey_split = coding_journey.split(" ")
>>> coding_journey_split
['I', 'love', 'coding'] # 可以理解

>>> coding_journey = "I love  coding" # 两个空格
>>> coding_journey_split = coding_journey.split(" ")
>>> coding_journey_split
['I', 'love', '', 'coding'] # 不能理解,为何两个空格只有一个''

>>> coding_journey = "I love   coding" # 三个空格
>>> coding_journey_split = coding_journey.split(" ")
>>> coding_journey_split
['I', 'love', '', '', 'coding'] # 不能理解,为何三个空格只有两个''
最佳答案
2023-4-26 01:56:41
这个现象是因为在`split()`方法中,你指定了一个空格(`" "`)作为分隔符。以下是三个示例的详细解释:

1. 一个空格的情况:

在这个示例中,字符串`"I love coding"`只包含一个空格作为单词之间的分隔符。当使用`split(" ")`时,它会将字符串分割成一个列表,其中每个元素是由空格分隔的单词。这就是为什么你得到的结果是`['I', 'love', 'coding']`。

2. 两个空格的情况:

在这个示例中,字符串`"I love  coding"`包含两个连续的空格作为单词之间的分隔符。当使用`split(" ")`时,它会将字符串分割成一个列表,其中每个元素是由空格分隔的单词。但是,因为有两个连续的空格,这意味着在`love`和`coding`之间还有一个空字符串。因此,你得到的结果是`['I', 'love', '', 'coding']`。

3. 三个空格的情况:

在这个示例中,字符串`"I love   coding"`包含三个连续的空格作为单词之间的分隔符。当使用`split(" ")`时,它会将字符串分割成一个列表,其中每个元素是由空格分隔的单词。因为有三个连续的空格,这意味着在`love`和`coding`之间有两个空字符串。所以你得到的结果是`['I', 'love', '', '', 'coding']`。

总结:每当你在`split(" ")`方法中使用一个空格作为分隔符时,多余的空格会被识别为一个空字符串。所以,每增加一个连续的空格,你会得到一个额外的空字符串。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-26 01:56:41 | 显示全部楼层    本楼为最佳答案   
这个现象是因为在`split()`方法中,你指定了一个空格(`" "`)作为分隔符。以下是三个示例的详细解释:

1. 一个空格的情况:

在这个示例中,字符串`"I love coding"`只包含一个空格作为单词之间的分隔符。当使用`split(" ")`时,它会将字符串分割成一个列表,其中每个元素是由空格分隔的单词。这就是为什么你得到的结果是`['I', 'love', 'coding']`。

2. 两个空格的情况:

在这个示例中,字符串`"I love  coding"`包含两个连续的空格作为单词之间的分隔符。当使用`split(" ")`时,它会将字符串分割成一个列表,其中每个元素是由空格分隔的单词。但是,因为有两个连续的空格,这意味着在`love`和`coding`之间还有一个空字符串。因此,你得到的结果是`['I', 'love', '', 'coding']`。

3. 三个空格的情况:

在这个示例中,字符串`"I love   coding"`包含三个连续的空格作为单词之间的分隔符。当使用`split(" ")`时,它会将字符串分割成一个列表,其中每个元素是由空格分隔的单词。因为有三个连续的空格,这意味着在`love`和`coding`之间有两个空字符串。所以你得到的结果是`['I', 'love', '', '', 'coding']`。

总结:每当你在`split(" ")`方法中使用一个空格作为分隔符时,多余的空格会被识别为一个空字符串。所以,每增加一个连续的空格,你会得到一个额外的空字符串。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-26 02:08:15 | 显示全部楼层
本帖最后由 lzb1001 于 2023-4-26 02:13 编辑
isdkz 发表于 2023-4-26 01:56
这个现象是因为在`split()`方法中,你指定了一个空格(`" "`)作为分隔符。以下是三个示例的详细解释:

...


以下用数字代替空格:

I1love23coding

用空格拆分上面的内容,不应该是下面这样吗?

['I', 'love', '3coding’]

因为3(空字符串)和coding之间并无空格啊

不知我表达得是否清楚?大神明白我的疑惑吗?

以下面这个为例:

2. 两个空格的情况:

在这个示例中,字符串`"I love  coding"`包含两个连续的空格作为单词之间的分隔符。当使用`split(" ")`时,它会将字符串分割成一个列表,其中每个元素是由空格分隔的单词。但是,因为有两个连续的空格,这意味着在`love`和`coding`之间还有一个空字符串。因此,你得到的结果是`['I', 'love', '', 'coding']`。

`love`和`coding`之间还有一个空字符串,但这个空字符串与coding之间并没有空格,所以它不应该是和coding连在一起返回才对即:['I', 'love', ' coding']吗?


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-26 02:15:33 | 显示全部楼层
本帖最后由 isdkz 于 2023-4-26 02:16 编辑
lzb1001 发表于 2023-4-26 02:08
以下用数字代替空格:

I1love23coding


中间有两个空格:
I1love2空字符3coding

中间有三个空格:

I1love2空字符3空字符4coding
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-26 02:22:24 | 显示全部楼层
本帖最后由 lzb1001 于 2023-4-26 02:25 编辑
isdkz 发表于 2023-4-26 02:15
中间有两个空格:
I1love2空字符3coding


大神抱歉,我好像还是没看懂和理解呢


中间有两个空格:
I love空格1空格2coding # 空格2作为空字符串,和coding连接在一起,中间并无空格,所以不应该返回下面吗?

['I', 'love',' coding'] # coding前面有一个空字符串


能明白我的不解或困惑吗?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-26 02:27:08 | 显示全部楼层
lzb1001 发表于 2023-4-26 02:22
大神抱歉,我好像还是没看懂和理解呢


1. 中间有两个空格的情况:

在这个例子中,字符串结构如下:
I<空格1>love<空格2><空格3>coding

我们使用一个空格作为分隔符。当我们遇到第一个空格时,它将"I"和"love"分开。然后遇到第二个空格,它将"love"和后面的内容分开。但是,在第二个和第三个空格之间,实际上没有任何字符,因此它被认为是一个空字符串。最后遇到第三个空格,它将空字符串和"coding"分开。所以,结果是:
['I', 'love', '', 'coding']

2. 中间有三个空格的情况:

在这个例子中,字符串结构如下:
I<空格1>love<空格2><空格3><空格4>coding

我们同样使用一个空格作为分隔符。当我们遇到第一个空格时,它将"I"和"love"分开。然后遇到第二个空格,它将"love"和后面的内容分开。但是,在第二个和第三个空格之间,实际上没有任何字符,因此它被认为是一个空字符串。紧接着遇到第三个空格,它将这个空字符串和后面的内容分开。再次,在第三个和第四个空格之间没有任何字符,所以又产生了一个空字符串。最后遇到第四个空格,它将这个空字符串和"coding"分开。因此,结果是:
['I', 'love', '', '', 'coding']

总之,每当我们使用一个空格作为分隔符时,如果有连续的空格,它们之间会产生空字符串。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-26 08:59:05 | 显示全部楼层
isdkz 发表于 2023-4-26 02:27
1. 中间有两个空格的情况:

在这个例子中,字符串结构如下:

哦,原来是这样,不存在的是空字符串

感谢大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 13:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表