Python中split()为何未拆分字符串为单个字符及实现方法
问题解答
原代码无法得到期望输出的原因
无参数调用str.split()时,Python内置的切分逻辑遵循固定规则:
- 仅将字符串内连续出现的任意空白字符(空格、制表符、换行等)作为切分边界
- 自动忽略字符串首尾的空白,且会把多个连续的空白合并为单个切分点
你代码中的hallway = "<--<--->->"是纯符号组成的字符串,内部不存在任何空白字符,split()找不到可用于切分的边界,因此会把整个字符串当作唯一元素返回,最终输出单元素列表["<--<--->->"],和逐字符拆分的期望效果无关。
能否仅通过split()实现期望的逐字符拆分效果
完全无法实现,核心原因有两点:
split()从设计上就要求传入的分隔符必须是非空字符串,如果尝试给它传入空字符串作为分隔符,解释器会直接抛出ValueError: empty separator错误,根本不支持“在每个字符间隙切一刀”的操作- 即使传入任意非空字符作为分隔符,切分结果也只会是匹配到分隔符位置的前后片段,永远无法得到每个字符单独作为列表元素的结果
补充:如果要实现逐字符拆分的目标,不需要依赖
split(),直接通过类型转换list(hallway)即可直接得到期望的列表结果。
内容的提问来源于stack exchange,提问作者user15463263
相关产品推荐
相关产品推荐

