鱼C论坛

 找回密码
 立即注册
查看: 2005|回复: 3

同样是不存在的分隔符,关于字符串的split()方法的返回结果为何不同

[复制链接]
发表于 2023-4-6 15:20:30 | 显示全部楼层 |阅读模式

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

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

x
>>> str2 = 'F_i_s_h_C'
>>> str2.split(sep = '')
Traceback (most recent call last):
  File "<pyshell#148>", line 1, in <module>
    str2.split(sep = '')
ValueError: empty separator

>>> str2 = 'F_i_s_h_C_._c_o_m'
>>> str2.split(sep='!')
['F_i_s_h_C_._c_o_m']


同样是不存在的分隔符,为何上面返回错误提示,而下面返回原字符串?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-6 15:22:19 | 显示全部楼层
在Python中,str.split()方法用于将字符串按照指定的分隔符进行分割。如果不指定分隔符,方法将默认以空格为分隔符。当指定的分隔符为空字符串时(如sep=''),Python会引发ValueError,因为这是不合法的分隔符。

而在第二个例子中,你使用了'!'作为分隔符。虽然这个分隔符在字符串str2中并不存在,但它是一个有效的分隔符。所以str.split()会返回一个包含原字符串的列表,因为没有找到任何用于分割的分隔符。

简单来说,第一个例子中的错误是因为指定了一个非法的空字符串分隔符,而第二个例子则是因为指定的分隔符在字符串中不存在。尽管结果不同,但这两种情况都属于合理的Python行为。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-9 08:08:00 | 显示全部楼层
在第一个例子中,因为你使用空字符串作为分隔符,所以split方法无法分割字符串,从而引发了ValueError错误。这是因为,使用空字符串作为分隔符时,split方法无法确定何时应该进行分割。

而在第二个例子中,你使用了一个不存在于原字符串中的分隔符"!",所以split方法无法在字符串中找到这个分隔符,从而返回了原字符串。

总的来说,使用不存在于原字符串中的分隔符进行分割,split方法会直接返回原字符串,不会报错。而使用无法确定分割位置的分隔符,如空字符串,会引发ValueError错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-9 17:43:13 | 显示全部楼层
在第一个示例中,使用空字符串作为分隔符,这是一个无效的分隔符,因为它不包含任何字符,导致抛出了 ValueError 异常。

在第二个示例中,使用了不存在于字符串中的字符 '!' 作为分隔符,由于在 str2 中不存在字符 '!',所以没有进行分割操作,返回了包含整个原始字符串的列表。实际上,无论使用任何不存在于字符串中的字符作为分隔符,都会返回包含整个原始字符串的列表。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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