python自带split函数当分隔符在边界时就出现Bug,重写split函数解决
本帖最后由 xunke 于 2022-8-30 07:16 编辑python内置的split函数详解网址https://www.runoob.com/python/att-string-split.html
当分隔符在边界时就出现bug,例子如下面截图所示
本人自己写的split函数解决这个问题,代码如下:
看看split有没有trim功能。。 s1其实最后就是有个结束符吧,“看不见”而已。字节流这样切分吧结束符分到后面,也是合理吧 len(s1)
看一下字符串长度 本帖最后由 Himem 于 2022-8-29 22:25 编辑
结果就是这样呀,
各个语言都是这个逻辑
不然split('a')试试 或者换成'abccba' dukelec 发表于 2022-8-29 22:12
len(s1)
看一下字符串长度
(引用自4楼)
结果是6个 先trim一下在split搞定 Himem 发表于 2022-8-29 22:24
结果就是这样呀,
各个语言都是这个逻辑
(引用自5楼)
以a分隔结果是['', 'bc', 'bc'] 本帖最后由 xunke 于 2022-8-30 11:30 编辑
shawn_bu 发表于 2022-8-30 07:23
先trim一下在split搞定
(引用自7楼)
没有空格,并且与空格无关。
python没发现有trim函数。 wye11083 发表于 2022-8-29 22:03
看看split有没有trim功能。。
(引用自2楼)
搜了下,python没trim函数,
python去空格方法是strip()函数 智涅 发表于 2022-8-29 22:08
s1其实最后就是有个结束符吧,“看不见”而已。字节流这样切分吧结束符分到后面,也是合理吧 ...
(引用自3楼)
不像结束符,开头也会有这个东西。 不是bug,各个语言都是这个逻辑。 我到觉得很合理啊!
有没有和我一样觉得合理的? s.strip().split() 本帖最后由 XIVN1987 于 2022-8-30 09:57 编辑
搜了下发现用removeprefix、removesuffix比较好。。不过这两个方法都是 Python 3.9 新添加的 你重写也太复杂了,你判断最后一个字符是不是分隔符,是的话,删除,再split,或者先split,再判断最后一个字符串是不是空,是空删除就行了,这样又简洁又易懂。 正常就是这样,如果第1个字符为c,那么最左边也会分隔出1个空字符串,VB的split函数也是这样,做过很多字符串处理,感觉这样分隔很有用 xunke 发表于 2022-8-30 08:23
没有空格,并且与空格无关。
(引用自9楼)
可以trim分割字符 不是 bug, 一般 split 函数默认的逻辑就是这样的
特殊情况有的语言可以加额外参数,像 C# 里可以通过使用 StringSplitOptions.RemoveEmptyEntries 选项把空的项目移除
https://docs.microsoft.com/zh-cn/dotnet/api/system.stringsplitoptions?view=net-6.0
这让用惯了 strtok 和 tokenize 的情何以堪... 谢谢以上各位高手的回复!
页:
[1]